home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_oth / forchek1 / fortran.c < prev    next >
C/C++ Source or Header  |  1991-11-05  |  88KB  |  2,698 lines

  1.  
  2. # line 9 "fortran.y"
  3.  
  4. /*
  5.   fortran.c:
  6.  
  7.     Copyright (C) 1991 by Robert K. Moniot.
  8.     This program is free software.  Permission is granted to
  9.     modify it and/or redistribute it.  There is no warranty
  10.     for this program.
  11.  
  12.  
  13.      This grammar is ANSI standard-conforming, except for:
  14.   -- Sensitive to whitespace, which is used in lexical analysis
  15.      to separate keywords and identifiers from context.  This
  16.      is a design feature.  Rules are the same as for Pascal.
  17.      (Of course stmt fields and end-of-line still honored.)
  18.      Note: a complex constant cannot be split across lines.
  19.   -- Currently, some keywords are partially reserved: may
  20.      only be used for scalar variables.  (See keywords.c)  This
  21.      is the fault of the lexical analyzer (too little lookahead).
  22.  
  23.      Extensions supported:
  24.          -- Case insensitive.
  25.    -- Hollerith constants.
  26.   -- Variable names may be longer than 6 characters.  Also
  27.      allows underscores in names.
  28.   -- DO ... ENDDO and DO WHILE loop forms allowed.
  29.   -- TYPE and ACCEPT I/O statements allowed.
  30.   -- Tabs are permitted in input, and (except in character data)
  31.      expand into blanks up to the next column equal to 1 mod 8.
  32.   -- Type declarations INTEGER*2, REAL*8, etc. are allowed.
  33.      REAL*8 becomes DOUBLE PRECISION.  For others, length spec
  34.      is ignored.
  35.   -- IMPLICIT NONE allowed.
  36.   */
  37.  
  38. /*  Author: R. Moniot
  39.  *  Date:   August 1988
  40.  *  Last revision: June 1991
  41.  */
  42.  
  43. #include <stdio.h>
  44. #include <string.h>
  45. #include "forchek.h"
  46. #include "symtab.h"
  47. void exit();
  48.  
  49.  
  50.  
  51. int current_datatype, /* set when parse type_name or type_stmt */
  52.     stmt_sequence_no,   /* set when parsing, reset to 0 at end_stmt */
  53.     control_item_count; /* count of items in control_info_list */
  54.  
  55. int current_module_hash = -1, /* hashtable index of current module name */
  56.     current_module_type,
  57.     executable_stmt=FALSE,
  58.     prev_stmt_class=0,
  59.    /* flags for lexer */
  60.     complex_const_allowed=FALSE, /* for help in lookahead for these */
  61.     inside_format=FALSE, /* when inside parens of FORMAT  */
  62.     integer_context=FALSE, /* says integers-only are to follow */
  63.     prev_goto=FALSE,
  64.     goto_flag=FALSE; /* if unconditional GOTO was encountered */
  65.  
  66. long exec_stmt_count=0; /* count of executable stmts in program */
  67.  
  68. PRIVATE void
  69.   print_comlist(), print_exprlist(), END_processing();
  70. PRIVATE Token *
  71.   append_token();
  72.  
  73.   /* Uses of Token fields for nonterminals: */
  74. /*
  75.   1. dim_bound_lists: dimensioning info for arrays:
  76.        token.class = no. of dimensions,
  77.        token.subclass = no. of elements
  78.   2. expressions
  79.        token.class = type_byte = storage_class << 4 + datatype
  80.        token.subclass = flags: CONST_EXPR, LVALUE_EXPR, etc.
  81.   3. common variable lists
  82.        token.subclass = flag: COMMA_FLAG used to handle extra/missing commas
  83. */
  84.  
  85. #define seq_header   1
  86. #define seq_implicit 2
  87. #define seq_specif   3
  88. #define seq_stmt_fun 4
  89. #define seq_exec     5
  90. #define seq_end      6
  91.  
  92. #define DBG(S) if(debug_parser) fprintf(list_fd,"\nproduction: S");
  93. #define DBGstr(S,str) \
  94.  if(debug_parser) fprintf(list_fd,"\nproduction: S%s",str);
  95.  
  96. # define tok_identifier 257
  97. # define tok_label 258
  98. # define tok_integer_const 259
  99. # define tok_real_const 260
  100. # define tok_dp_const 261
  101. # define tok_complex_const 262
  102. # define tok_logical_const 263
  103. # define tok_string 264
  104. # define tok_hollerith 265
  105. # define tok_edit_descriptor 266
  106. # define tok_letter 267
  107. # define tok_relop 268
  108. # define tok_AND 269
  109. # define tok_OR 270
  110. # define tok_EQV 271
  111. # define tok_NEQV 272
  112. # define tok_NOT 273
  113. # define tok_power 274
  114. # define tok_concat 275
  115. # define tok_ASSIGN 276
  116. # define tok_ACCEPT 277
  117. # define tok_BACKSPACE 278
  118. # define tok_BLOCK 279
  119. # define tok_CALL 280
  120. # define tok_CHARACTER 281
  121. # define tok_CLOSE 282
  122. # define tok_COMMON 283
  123. # define tok_COMPLEX 284
  124. # define tok_CONTINUE 285
  125. # define tok_DATA 286
  126. # define tok_DIMENSION 287
  127. # define tok_DO 288
  128. # define tok_DOUBLE 289
  129. # define tok_DOWHILE 290
  130. # define tok_ELSE 291
  131. # define tok_ELSEIF 292
  132. # define tok_END 293
  133. # define tok_ENDDO 294
  134. # define tok_ENDFILE 295
  135. # define tok_ENDIF 296
  136. # define tok_ENTRY 297
  137. # define tok_EQUIVALENCE 298
  138. # define tok_EXTERNAL 299
  139. # define tok_FORMAT 300
  140. # define tok_FUNCTION 301
  141. # define tok_GO 302
  142. # define tok_GOTO 303
  143. # define tok_IF 304
  144. # define tok_IMPLICIT 305
  145. # define tok_INCLUDE 306
  146. # define tok_INQUIRE 307
  147. # define tok_INTEGER 308
  148. # define tok_INTRINSIC 309
  149. # define tok_LOGICAL 310
  150. # define tok_OPEN 311
  151. # define tok_PARAMETER 312
  152. # define tok_PAUSE 313
  153. # define tok_PRECISION 314
  154. # define tok_PRINT 315
  155. # define tok_PROGRAM 316
  156. # define tok_READ 317
  157. # define tok_REAL 318
  158. # define tok_RETURN 319
  159. # define tok_REWIND 320
  160. # define tok_SAVE 321
  161. # define tok_STOP 322
  162. # define tok_SUBROUTINE 323
  163. # define tok_TO 324
  164. # define tok_TYPE 325
  165. # define tok_THEN 326
  166. # define tok_WHILE 327
  167. # define tok_WRITE 328
  168. # define tok_illegal 329
  169. # define EOS 127
  170. # define REDUCE 331
  171. #define yyclearin yychar = -1
  172. #define yyerrok yyerrflag = 0
  173. extern int yychar;
  174. extern int yyerrflag;
  175. #ifndef YYMAXDEPTH
  176. #define YYMAXDEPTH 150
  177. #endif
  178. #ifndef YYSTYPE
  179. #define YYSTYPE int
  180. #endif
  181. YYSTYPE yylval, yyval;
  182. typedef int yytabelem;
  183. # define YYERRCODE 256
  184.  
  185. # line 2197 "fortran.y"
  186.  
  187. void
  188. init_parser()   /* Initialize various flags & counters */
  189. {
  190.  initial_flag = TRUE; /* set flag for keyword test */
  191.  implicit_flag=FALSE; /* clear flags for IMPLICIT stmt */
  192.  implicit_letter_flag = FALSE;
  193.  implicit_type_given = FALSE;
  194.  implicit_none = FALSE;
  195.  prev_token_class = EOS;
  196.  complex_const_allowed = FALSE;
  197.  stmt_sequence_no = 0;
  198. }
  199.  
  200. /* Debugging routine: prints the expression list of various productions */
  201.  
  202. PRIVATE void
  203. print_exprlist(s,t)
  204.  char *s;
  205.  Token *t;
  206. {
  207.  
  208.  fprintf(list_fd,"\n%s arglist: ",s);
  209.  
  210.  if(t == NULL)
  211.   fprintf(list_fd,"(empty)");
  212.  else {
  213.        while( (t=t->next_token) != NULL) {
  214.     fprintf(list_fd,"%s ",type_name[datatype_of(t->class)]);
  215.     if( is_true(ID_EXPR,t->subclass) )
  216.    fprintf(list_fd,"(%s) ",token_name(*t));
  217.      }
  218.  }
  219. }
  220.  
  221. PRIVATE void
  222. print_comlist(s,t)
  223.  char *s;
  224.  Token *t;
  225. {
  226.  
  227.  fprintf(list_fd,"\n%s varlist: ",s);
  228.  
  229.  if(t == NULL)
  230.   fprintf(list_fd,"(empty)");
  231.  else {
  232.        while( (t=t->next_token) != NULL) {
  233.     fprintf(list_fd,"%s ",type_name[datatype_of(t->class)]);
  234.     if( is_true(ID_EXPR,t->subclass) )
  235.    fprintf(list_fd,"(%s) ",token_name(*t));
  236.   }
  237.    }
  238. }
  239.  
  240. /* After having parsed prog_stmt, function_stmt, subroutine_stmt,
  241.    block_data_stmt, the stmt_sequence_no is set to the value seq_header.
  242. */
  243.  
  244. void
  245. check_seq_header(t)
  246.      Token *t;
  247. {
  248.  if(stmt_sequence_no >= seq_header) {
  249.     syntax_error( (t == (Token *) NULL? line_num: t->line_num),
  250.    NO_COL_NUM,
  251.    "missing END statement inserted");
  252.     msg_tail( (t == (Token *) NULL? "at end of file":
  253.         "prior to statement") );
  254.  
  255.     END_processing(t);
  256.  }
  257.  stmt_sequence_no = seq_header;
  258. }
  259.  
  260.  
  261.  
  262.  
  263.  /* After having parsed end_stmt, common block lists and
  264.     subprogram argument lists are copied over into global symbol
  265.     table, the local symbol table is printed out and then cleared,
  266.     and stmt_sequence_no is set to zero for start of next module.
  267.  */
  268.  
  269. PRIVATE void
  270. END_processing(t)
  271.  Token *t;
  272. {
  273.   if(current_module_hash != -1) {
  274.         if(exec_stmt_count == 0 &&
  275.     current_module_type != type_BLOCK_DATA) {
  276.    warning(t == (Token *)NULL? line_num: t->line_num, NO_COL_NUM,
  277.     "Module contains no executable statements");
  278.  }
  279.  
  280.  if(do_list && t != (Token *)NULL)
  281.      flush_line_out(t->line_num);
  282.  process_lists(current_module_hash);
  283.  debug_symtabs();
  284.  print_loc_symbols(current_module_hash);
  285.  init_symtab();
  286.   }
  287.   exec_stmt_count = 0;
  288.   stmt_sequence_no = 0;
  289.   current_module_hash = -1;
  290.   implicit_type_given = FALSE;
  291.   implicit_none = FALSE;
  292. }
  293.  
  294.   /* Routine to add token t to the front of a token list. */
  295. PRIVATE Token *
  296. append_token(tlist,t)
  297.      Token *tlist, *t;
  298. {
  299.  Token *tcopy;
  300.  if((tcopy=new_token()) == (Token *)NULL){
  301.   fprintf(stderr,
  302.    "Out of token space at line %u\n",
  303.    line_num);
  304.   exit(1);
  305.  }
  306.  
  307.  *tcopy = *t;  /* make permanent copy of token */
  308.  tcopy->next_token = tlist; /* link it onto front of list */
  309.  return tcopy;  /* return it as new tlist */
  310. }
  311. yytabelem yyexca[] ={
  312. -1, 1,
  313.  0, -1,
  314.  -2, 0,
  315. -1, 504,
  316.  268, 0,
  317.  -2, 354,
  318. -1, 570,
  319.  42, 201,
  320.  -2, 203,
  321. -1, 578,
  322.  42, 405,
  323.  -2, 375,
  324.  };
  325. # define YYNPROD 407
  326. # define YYLAST 1247
  327. yytabelem yyact[]={
  328.  
  329.    246,   473,   524,   523,   224,   563,   136,   268,   340,   567,
  330.    235,   566,   427,   457,   463,   464,   458,   442,   543,   357,
  331.    439,   236,   541,   367,   356,    77,   369,   374,    76,    75,
  332.    154,   437,   247,   304,   221,   115,   128,   115,   365,   242,
  333.    220,   197,   250,   115,   244,   172,   173,   338,   137,   243,
  334.    703,   181,   208,   354,   186,   288,   162,    81,   177,   241,
  335.    294,   293,   316,   143,   271,   282,   386,   178,   114,   178,
  336.    372,   133,   387,   148,   149,   178,   135,   178,   388,   168,
  337.    687,   176,   182,   187,   187,   192,   194,   198,   160,   116,
  338.    205,   564,   164,   213,   213,   131,   158,   134,   339,   157,
  339.    156,   269,   201,   203,   206,   132,   115,   155,   396,   372,
  340.    382,   383,   141,   153,   279,   280,   281,   546,   276,   115,
  341.    254,   258,   260,   137,   165,   212,   202,   641,   312,   163,
  342.    214,   167,   341,   291,   183,   188,   188,   114,   204,   275,
  343.    133,   199,   237,   285,   286,   135,   574,   292,   573,   325,
  344.    147,   199,   137,   298,   441,   468,   171,   328,   305,   228,
  345.    229,   230,   231,   170,   131,   333,   134,   708,   705,   679,
  346.    702,   701,   425,   381,   132,   698,   633,   176,   165,   697,
  347.    625,   381,   176,   696,   190,   332,   359,   423,   381,   621,
  348.    360,   491,   683,   682,   115,   681,   421,   187,   680,   675,
  349.    319,   381,   185,   337,   579,   674,   352,   137,   462,   202,
  350.    400,   310,   301,   398,   673,   672,   327,   163,   329,   377,
  351.    664,   195,   662,   368,   145,   582,    82,    89,   124,   206,
  352.    126,   560,    97,   371,   184,    85,   256,   256,   256,   492,
  353.    144,   120,   351,   349,   661,   125,   347,   337,   311,   188,
  354.    375,   384,   119,   118,   120,   317,   699,    98,   318,   424,
  355.    637,    96,   368,    87,   667,    91,   368,   121,   368,   100,
  356.    123,   607,    86,   358,   422,    92,   208,   137,   122,   137,
  357.    137,   394,   395,   420,   605,   429,   477,   688,   432,   635,
  358.    389,   461,   426,   399,   402,   179,   397,   179,   404,   300,
  359.    406,   622,   376,   179,   617,   179,   613,   612,   440,   611,
  360.    557,   593,   189,   558,   546,   685,   370,   341,   542,   550,
  361.    497,   553,   451,   460,   436,   350,   348,   326,   168,   346,
  362.    344,   465,   555,   415,   548,   410,   405,   403,   176,   331,
  363.    474,   137,   182,   547,   187,   401,   379,   115,   337,   115,
  364.    319,   137,   364,   363,   478,   137,   479,   202,   198,   366,
  365.    137,   137,   228,   229,   230,   231,   575,   576,   577,   137,
  366.    163,   450,   163,   329,   429,   137,   378,   327,   452,   335,
  367.    455,   488,   493,   385,   486,   362,   495,   470,   496,   483,
  368.    475,   476,   471,   480,   183,   137,   188,   137,   366,   382,
  369.    383,   448,   366,   498,   366,   317,   382,   383,   318,   413,
  370.    382,   383,   321,   494,   368,   368,   368,   137,   525,   382,
  371.    383,   382,   383,   505,   506,   345,   502,   431,   440,   533,
  372.    440,   336,   440,   504,   521,   507,   508,   503,   355,   509,
  373.    308,   368,   499,   500,   307,   299,   515,   516,   517,   297,
  374.    296,   305,   295,   528,   572,   529,   570,   530,   571,   557,
  375.    278,   274,   334,   546,   540,   210,   142,   542,   550,   211,
  376.    553,    84,   158,   537,   417,   157,   156,   561,   559,   200,
  377.    373,   555,    14,   155,   393,   269,   481,    57,   314,   392,
  378.    469,   313,   594,   588,   589,   320,   482,   368,   646,   240,
  379.    601,   669,   249,   602,   248,   596,   684,   390,   390,   391,
  380.    391,   390,   598,   391,   603,   251,   431,   694,   710,   604,
  381.    585,   609,   610,   498,   217,   704,   534,   306,   629,   693,
  382.    390,   548,   391,   549,   665,   631,   608,   485,   551,   552,
  383.    547,   644,   634,   381,   645,   490,   440,   648,   623,   554,
  384.    256,   256,   256,   599,   586,   616,   209,   215,   490,   522,
  385.    636,   539,   527,   639,   640,   638,   535,   207,   501,   233,
  386.    411,   414,   249,   272,   248,   453,   536,   256,   650,   651,
  387.    474,   653,   460,   460,     7,   435,   600,   361,   429,   270,
  388.    465,   615,   465,   465,   490,   654,   269,   431,   657,   655,
  389.    660,   658,   659,   663,   218,   218,   614,   218,   218,   490,
  390.    330,   649,   597,   668,   232,   485,   252,   253,   584,   666,
  391.    580,   585,   519,   581,   525,   520,   678,   514,   513,   512,
  392.    490,   490,   490,   256,   489,   256,   484,   490,   443,   485,
  393.    676,   444,   322,   233,   342,   707,   249,   343,   248,   185,
  394.    283,   686,   695,   572,   572,   570,   691,   571,   692,   690,
  395.    689,   428,   233,   619,   620,   249,   628,   248,   557,   624,
  396.    525,   627,   546,   700,   626,   606,   591,   550,   632,   553,
  397.    548,   590,   549,   538,   531,   287,   587,   551,   552,   547,
  398.    555,   583,   487,   454,   474,   706,   434,   233,   554,   257,
  399.    249,   418,   248,   643,   409,   525,   408,   709,   407,   373,
  400.    322,   474,   711,    16,   137,     8,   137,   324,   228,   229,
  401.    230,   231,   227,   225,   226,   309,   261,   302,   257,   249,
  402.    431,   248,   245,    82,    89,   124,   110,   126,   114,    97,
  403.     74,   133,    85,    71,    72,   127,   135,   105,   101,   102,
  404.     17,   106,   125,   103,    67,    73,    78,    68,   129,   119,
  405.    118,   120,   111,    11,    98,   131,    79,   134,    96,    69,
  406.     87,   289,    91,    63,   121,   132,   100,   123,    80,    86,
  407.    130,   284,    92,    16,   137,   122,   137,   277,   228,   229,
  408.    230,   231,   227,   225,   226,   259,   273,   257,   249,   266,
  409.    248,   151,   245,    82,    89,   124,   110,   126,   114,    97,
  410.     74,   133,    85,    71,    72,   127,   135,   105,   101,   102,
  411.     17,   106,   125,   103,    67,    73,    78,    68,   129,   119,
  412.    118,   120,   111,   233,    98,   131,    79,   134,    96,    69,
  413.     87,   430,    91,    63,   121,   132,   100,   123,    80,    86,
  414.    130,   255,    92,   257,   249,   122,   248,   223,   222,   239,
  415.    137,    10,   228,   229,   230,   231,   227,   225,   226,   240,
  416.    140,     9,   249,   618,   248,     3,   245,   412,   138,   137,
  417.    139,   228,   229,   230,   231,   227,   225,   226,   518,   548,
  418.    574,   549,   573,   265,    99,   245,   551,   552,   547,   233,
  419.    556,   545,   249,   544,   248,   150,    93,   554,    95,    94,
  420.    264,   263,   262,   238,   137,   671,   228,   229,   230,   231,
  421.    227,   225,   226,   233,   511,   656,   249,   670,   248,   510,
  422.    245,    88,   233,   290,   459,   249,   380,   248,   234,    90,
  423.    419,   526,   233,   137,   219,   228,   229,   230,   231,   227,
  424.    225,   226,   233,   630,   104,   249,   677,   248,   416,   245,
  425.    433,   233,    83,   117,   249,   595,   248,   592,   353,   652,
  426.    233,   532,   315,   249,   569,   248,   568,   647,   565,   233,
  427.    449,   472,   249,   161,   248,   159,   196,   193,   233,   191,
  428.    642,   249,   445,   248,   303,   562,   447,   446,   233,   152,
  429.     70,   249,   113,   248,   112,   180,   428,   174,   233,   175,
  430.    467,   249,   137,   248,   228,   229,   230,   231,   227,   225,
  431.    226,   216,   466,   219,   323,   169,   456,   166,   245,    66,
  432.    438,   109,    65,   108,   107,    64,   146,    62,    61,    60,
  433.     59,    58,    56,    55,    54,    53,    52,    51,    50,    49,
  434.    137,    48,   228,   229,   230,   231,   227,   225,   226,    47,
  435.     46,    45,    44,    43,    42,    41,    40,    39,   137,    38,
  436.    228,   229,   230,   231,   227,   225,   226,    37,    36,    35,
  437.     34,    33,    32,    31,   245,   267,   137,    30,   228,   229,
  438.    230,   231,   227,   225,   226,    29,    28,    27,    26,    25,
  439.     24,    23,   245,    22,   137,    21,   578,   229,   230,   231,
  440.    575,   576,   577,    20,    19,    18,   137,    15,   228,   229,
  441.    230,   231,   227,   225,   226,    13,    12,     6,     5,     4,
  442.      2,     1,   245,     0,     0,     0,     0,     0,     0,     0,
  443.    137,     0,   228,   229,   230,   231,   227,   225,   226,   137,
  444.      0,   228,   229,   230,   231,   227,   225,   226,     0,   137,
  445.      0,   228,   229,   230,   231,   227,   225,   226,     0,   137,
  446.      0,   228,   229,   230,   231,   227,   225,   226,   137,     0,
  447.    228,   229,   230,   231,   227,   225,   226,   137,     0,   228,
  448.    229,   230,   231,   227,   225,   226,   137,     0,   228,   229,
  449.    230,   231,   227,   225,   226,   137,     0,   228,   229,   230,
  450.    231,   227,   225,   226,     0,   137,     0,   228,   229,   230,
  451.    231,   227,   225,   226,     0,   137,     0,   228,   229,   230,
  452.    231,   227,   225,   226,     0,     0,     0,     0,   137,     0,
  453.    228,   229,   230,   231,   227,   225,   226 };
  454. yytabelem yypact[]={
  455.  
  456.    457, -1000,   457, -1000, -1000, -1000, -1000, -1000,   527, -1000,
  457.  -1000,  -152, -1000, -1000, -1000, -1000,   339,   -64, -1000, -1000,
  458.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  459.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  460.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  461.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  462.  -1000, -1000, -1000, -1000, -1000, -1000,    23,  -105, -1000,   761,
  463.   -144,   138,  -105, -1000,    20,  -105,   160,   140,  -105,  -105,
  464.     94,   418,  -133,    98,   -50,   338,  -134,  -134,   981,   902,
  465.    829,   902,   902,   811,   755,   686, -1000, -1000, -1000,   759,
  466.    958,   -63,   756,   334,  -209,   747,   333,  -105,  -105,  -105,
  467.   -221, -1000,   608, -1000, -1000,   741,   645, -1000, -1000,  -269,
  468.    731, -1000, -1000, -1000, -1000, -1000,  -105,  -133,  -240, -1000,
  469.  -1000, -1000, -1000, -1000, -1000,  -254, -1000, -1000, -1000, -1000,
  470.  -1000,   325, -1000, -1000,   323,   322,  -105, -1000,   318,   172,
  471.    687,  -105,   400,   313, -1000,   685, -1000,   607, -1000,    84,
  472.  -1000,   444, -1000, -1000, -1000,   138,   368, -1000,   670,   677,
  473.     22,    30, -1000, -1000,   566,  -105,   670, -1000,   118, -1000,
  474.    335, -1000,   670, -1000,   304,    58, -1000,   602,   605,   203,
  475.   -105,   202, -1000,   199, -1000, -1000,   198, -1000, -1000,  -105,
  476.  -1000,  -271, -1000,   311,  -133,   146,   543, -1000,   258,  -133,
  477.  -1000,   226, -1000, -1000, -1000,   225,   657,   189,  -205, -1000,
  478.  -1000,   669,   645, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  479.  -1000, -1000,   175,   859,   219,   499, -1000,  -161, -1000, -1000,
  480.    829,  -204,  -197, -1000,  -190,   968,   464,   442,   793,   793,
  481.  -1000,  -166,   169,   166,   218,   657,  -161, -1000,   210,   657,
  482.    209,   657,   668,   666,   664,   208,   529, -1000,   206,   464,
  483.  -1000, -1000,  -274, -1000, -1000,   413,   661, -1000, -1000,   156,
  484.    147,   132, -1000,  -127,   603, -1000, -1000,   948, -1000, -1000,
  485.    656, -1000,   541, -1000, -1000, -1000, -1000, -1000,   197, -1000,
  486.  -1000,   112, -1000,   597, -1000, -1000, -1000, -1000, -1000, -1000,
  487.  -1000, -1000,   138, -1000,   138,   138,   531, -1000, -1000,   653,
  488.  -1000,  -105,   892,   164,  -105, -1000,    28, -1000, -1000, -1000,
  489.  -1000,  -105,   443, -1000, -1000,  -105, -1000,  -105, -1000,   939,
  490.  -1000, -1000,    58,    58, -1000,   159, -1000,  -105, -1000,  -105,
  491.  -1000,   104,   439,   859,  -105, -1000,   595, -1000, -1000,  -133,
  492.    652,  -133, -1000, -1000, -1000,   593,  -161, -1000,   178, -1000,
  493.  -1000,   829,   793,   603, -1000, -1000, -1000,   829,   150, -1000,
  494.    193,   829,   859,   859,   524,   150,   859,   859,   968,  -190,
  495.    793,   793,   793,   793,   442,   442,   793, -1000, -1000, -1000,
  496.  -1000, -1000,   588, -1000,   587, -1000,   586,   657,   657,   657,
  497.  -1000, -1000,   581,  -161,  -133, -1000,   859,   968, -1000,   859,
  498.  -1000,   112, -1000,   112, -1000,   112, -1000,   643,   930,   468,
  499.    522,  -161,   468,   859,   657, -1000, -1000,   642,   517, -1000,
  500.  -1000, -1000,   423,   186,  -105,   170,  -213,  -176, -1000,   847,
  501.  -1000,   143, -1000, -1000,   859, -1000,   579, -1000,   167, -1000,
  502.    464, -1000,   651,   577,   510,   646,   645, -1000, -1000, -1000,
  503.  -1000, -1000,   640,   635,   464, -1000, -1000, -1000, -1000, -1000,
  504.  -1000, -1000,  -161,   184,   921,  -133,   571,  -133,   509,   459,
  505.    657, -1000,   657,   157, -1000,   634,   144, -1000, -1000,  -204,
  506.   -204,   829,  -197, -1000, -1000,   442,   442, -1000, -1000, -1000,
  507.    829,   829,   182,   180,   179,   565,   550,   514,   177, -1000,
  508.    622, -1000,   148,   174,   504,   464,   859,   139,   633,   630,
  509.    625, -1000, -1000,   487,   912,   859,   135,   501,   162,   112,
  510.    133, -1000,   632, -1000,    77, -1000, -1000, -1000, -1000, -1000,
  511.   -132, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  512.    859, -1000,   500, -1000,   453,   503, -1000, -1000,   569, -1000,
  513.  -1000, -1000, -1000,  -100,  -100, -1000, -1000, -1000, -1000,   968,
  514.  -1000,   892,   883,  -105, -1000,  -105,  -105,   603, -1000, -1000,
  515.  -1000, -1000,   117, -1000,    95,   968, -1000,    93,   493,  -133,
  516.  -1000,   137,   829, -1000, -1000, -1000, -1000, -1000,   440,   499,
  517.    499, -1000, -1000, -1000,    88,    87,    78, -1000,    72,  -161,
  518.   -133, -1000, -1000,   968,   128,    71,    68,    66,    65, -1000,
  519.  -1000,   465,  -161, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  520.    274, -1000, -1000,  -161, -1000,  -176,  -187,   240,   847,   103,
  521.  -1000, -1000,   617,   485, -1000, -1000, -1000,   476, -1000, -1000,
  522.    611, -1000, -1000,    56, -1000,    52,    48, -1000,   129,   968,
  523.     44,    43, -1000, -1000, -1000, -1000, -1000,  -276,   481,    41,
  524.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  525.  -1000, -1000, -1000,   968, -1000, -1000, -1000, -1000, -1000, -1000,
  526.    604, -1000, -1000,    40,   968, -1000,   474, -1000, -1000, -1000,
  527.    968, -1000 };
  528. yytabelem yypgo[]={
  529.  
  530.      0,  1131,  1130,   875,  1129,  1128,  1127,   871,  1126,  1125,
  531.    482,  1117,  1115,  1114,  1113,  1105,   861,  1103,  1101,  1100,
  532.   1099,  1098,  1097,  1096,  1095,  1087,  1083,  1082,  1081,  1080,
  533.   1079,  1078,  1077,  1069,  1067,  1066,  1065,  1064,  1063,  1062,
  534.   1061,  1060,  1059,  1051,  1049,  1048,  1047,  1046,  1045,  1044,
  535.   1043,  1042,   487,  1041,  1040,  1039,  1038,  1037,  1036,     6,
  536.     31,  1035,  1034,  1033,    36,    29,    28,    25,  1032,  1031,
  537.   1030,    20,  1029,  1027,    58,  1026,    13,    16,  1025,  1024,
  538.     14,    15,  1022,  1010,    12,    27,   163,   156,    46,  1009,
  539.     45,  1007,  1005,   234,  1004,     8,  1002,    47,    51,    54,
  540.   1000,   999,    30,   997,   996,   995,     5,     1,   994,    33,
  541.    992,   990,   989,   987,   986,    41,   985,    88,   983,   980,
  542.    978,   977,    56,    57,    92,    11,     9,   976,   974,   972,
  543.    969,    62,    89,   968,   142,   967,    34,   963,    19,   962,
  544.     24,     7,   471,   960,   958,   956,   954,     3,   941,   940,
  545.      2,   469,   939,   938,    10,   936,   933,    38,   931,   524,
  546.    929,   927,   924,   915,    23,    26,    21,   913,   912,   911,
  547.    910,   909,   908,   906,   515,   905,    17,    22,    18,   903,
  548.    901,   900,   894,   893,   888,   877,   873,   859,    59,    39,
  549.     49,    44,     0,    32,    42,    40,   858,   857,     4,   841 };
  550. yytabelem yyr1[]={
  551.  
  552.      0,     1,     1,     2,     2,     3,     3,     3,     3,     4,
  553.      4,     7,     7,     7,     7,     7,     8,     8,     8,     8,
  554.      5,     5,    16,     6,     9,     9,     9,     9,     9,     9,
  555.      9,     9,     9,     9,     9,     9,    10,    10,    10,    10,
  556.     10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
  557.     10,    10,    10,    10,    10,    10,    10,    10,    11,    11,
  558.     11,    11,    11,    11,    11,    58,    12,    17,    17,    13,
  559.     61,    61,    61,    61,    62,    63,    64,    64,    64,    14,
  560.     68,    68,    69,    60,    60,    70,    70,    71,    71,    15,
  561.     15,    72,    22,    73,    73,    74,    75,    75,    76,    76,
  562.     76,    76,    78,    23,    79,    79,    80,    80,    81,    81,
  563.     81,    82,    83,    83,    24,    24,    24,    87,    87,    88,
  564.     89,    89,    89,    86,    86,    90,    90,    91,    91,    25,
  565.     25,    25,    25,    65,    65,    65,    94,    94,    94,    94,
  566.     96,    66,    67,    92,    92,    98,    98,    93,    93,    99,
  567.     99,    99,    99,   100,    20,    20,   101,   103,   101,   104,
  568.    102,   105,   105,   106,   106,    97,    97,    97,    19,   108,
  569.    108,   110,   109,    26,   112,   112,    27,   113,   113,    28,
  570.     28,   114,   114,   115,   115,    21,   116,   116,   116,   119,
  571.    121,   117,   118,   118,   122,   122,   120,   120,   125,   125,
  572.    127,   127,   126,   126,   124,   130,   130,   129,   129,   131,
  573.    131,   133,   135,    29,   123,   123,   123,    30,    31,    32,
  574.     32,    33,    33,    33,   139,   139,   140,   140,    34,    51,
  575.     52,   143,   142,    53,   144,   145,    53,    54,    55,    55,
  576.     56,   148,    56,   149,    56,   146,   146,   146,   147,   147,
  577.     57,    57,    35,    36,    37,   151,   151,   151,   151,   153,
  578.     40,   155,    40,   156,   152,    38,    38,    38,    38,    38,
  579.    158,    39,    39,    41,   160,   161,    41,    42,   162,   163,
  580.     42,   157,   157,   164,   164,   154,   154,   166,   166,   167,
  581.    168,    46,   169,    47,   170,    48,    44,    44,   171,    45,
  582.     45,   172,    43,    43,   173,   165,   165,   159,   159,   175,
  583.     18,   176,   176,   176,   177,   177,   177,   178,   178,   178,
  584.    180,   180,   180,   180,   180,   180,   181,   179,   179,   183,
  585.     49,   184,    49,   186,    49,   182,   185,   185,   185,   185,
  586.     50,    50,   111,   134,   187,   187,   187,   188,   188,   189,
  587.    189,   190,   190,   191,   191,   192,   192,   192,   192,   192,
  588.    193,   193,   193,   194,   194,   174,   174,   195,   195,   195,
  589.    195,   195,   195,   195,   195,   198,   198,   198,   198,   141,
  590.    150,   107,    77,   132,   196,    84,    84,   199,   199,   197,
  591.    197,   137,   137,    85,    85,    85,    85,   136,    59,   128,
  592.    128,   128,   128,   128,   128,    95,   138 };
  593. yytabelem yyr2[]={
  594.  
  595.      0,     2,     0,     2,     4,     3,     3,     2,     2,     5,
  596.      3,     3,     3,     3,     3,     5,     3,     3,     3,     3,
  597.      2,     4,     4,     7,     3,     3,     3,     3,     3,     3,
  598.      3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
  599.      3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
  600.      3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
  601.      3,     3,     3,     3,     3,     1,     9,     7,    13,     2,
  602.      7,    13,     7,    13,     5,     3,     2,     2,     2,     2,
  603.      7,    13,     3,     1,     2,     3,     7,     3,     3,     4,
  604.      7,     5,     6,     2,     6,     9,     3,     7,     3,     7,
  605.      3,     7,     1,     9,     6,    10,     7,     7,     3,     3,
  606.      3,     8,     4,     4,     7,     7,     9,     3,     5,     5,
  607.      7,     5,     3,     3,     5,     3,     5,     3,     3,     6,
  608.      6,     6,     8,     2,     7,     2,     3,     3,     3,     3,
  609.      5,     3,     7,     2,     6,     3,     3,     2,     6,     3,
  610.      7,     3,     7,     3,     7,     7,     2,     1,     8,     1,
  611.     11,     2,     6,     3,     7,     6,     2,     6,    10,     2,
  612.      6,     1,     9,     6,     3,     7,     6,     3,     7,     4,
  613.      6,     2,     6,     3,     7,     6,     2,     4,     6,     1,
  614.      1,    12,     2,     6,     3,     2,     2,     6,     2,     6,
  615.      2,     3,     2,     3,    13,     6,    10,     4,     4,     3,
  616.      2,     1,     1,    13,     2,     2,     2,    11,     6,    12,
  617.     14,     7,    13,    15,     2,     4,     2,     6,    14,     4,
  618.      6,     1,    11,     4,     1,     1,    16,     4,     4,     6,
  619.     11,     1,    15,     1,    13,     4,     6,     3,     6,    10,
  620.      7,     5,     4,     6,     6,     0,     2,     3,     2,     1,
  621.      6,     1,     8,     1,    11,    10,    12,    14,     6,    10,
  622.      3,     7,    11,     6,     1,     1,    14,     7,     1,     1,
  623.     15,     3,     7,     7,     3,     2,     6,     3,     2,    15,
  624.      1,    12,     1,    12,     1,    12,     6,    10,     3,     6,
  625.     10,     3,     6,    10,     3,     2,     2,     3,     2,     1,
  626.     13,     0,     4,     6,     2,     4,     2,     6,     2,     2,
  627.      2,     2,     2,     2,     2,     3,     2,     2,     4,     1,
  628.      6,     1,    10,     1,    12,     5,     3,     5,     7,     9,
  629.      5,     7,     3,     3,     2,     7,     7,     2,     7,     2,
  630.      7,     2,     5,     2,     7,     2,     5,     5,     7,     7,
  631.      2,     7,     7,     2,     7,     2,     7,     3,     2,     2,
  632.      3,     3,     3,     3,     7,     3,     3,     3,     3,     3,
  633.      3,     3,     3,     9,     9,     1,     2,     3,     7,     4,
  634.      4,     4,     4,     6,     9,     9,    11,     3,     2,     2,
  635.      4,     4,     2,     2,     2,     2,     3 };
  636. yytabelem yychk[]={
  637.  
  638.  -1000,    -1,    -2,    -3,    -4,    -5,    -6,   127,   258,    -7,
  639.    -16,   306,    -8,    -9,   -10,   -11,   256,   293,   -12,   -13,
  640.    -14,   -15,   -17,   -18,   -19,   -20,   -21,   -22,   -23,   -24,
  641.    -25,   -26,   -27,   -28,   -29,   -30,   -31,   -32,   -33,   -34,
  642.    -35,   -36,   -37,   -38,   -39,   -40,   -41,   -42,   -43,   -44,
  643.    -45,   -46,   -47,   -48,   -49,   -50,   -51,   -52,   -53,   -54,
  644.    -55,   -56,   -57,   316,   -61,   -68,   -72,   297,   300,   312,
  645.   -100,   286,   287,   298,   283,   -65,   -66,   -67,   299,   309,
  646.    321,  -123,   276,  -139,  -142,   285,   322,   313,  -158,   277,
  647.   -152,   315,   325,  -173,  -171,  -172,   311,   282,   307,  -182,
  648.    319,   291,   292,   296,  -146,   290,   294,   -62,   -63,   -69,
  649.    279,   305,   -94,   -96,   281,  -136,  -132,  -137,   303,   302,
  650.    304,   317,   328,   320,   278,   295,   280,   288,   -64,   301,
  651.    323,   308,   318,   284,   310,   289,   -59,   257,    -3,    -7,
  652.    -16,   264,   127,   127,   304,   288,   -58,   127,   -59,   -59,
  653.   -175,    40,  -101,   257,  -102,   -64,   -65,   -66,   -67,  -116,
  654.   -117,  -118,  -122,  -123,  -124,    40,   -73,   -74,   -59,   -78,
  655.    -86,   -87,   -90,   -88,   -91,   -89,   -59,   -74,    47,   275,
  656.    -92,   -98,   -59,   -74,   -93,    42,   -99,   -59,   -74,   -93,
  657.     44,  -112,   -59,  -113,   -59,   127,  -114,  -115,   -59,    47,
  658.     61,  -138,   259,  -138,    40,   -59,  -138,   -10,   326,  -142,
  659.    127,  -151,   259,   -59,   264,  -151,    40,  -159,  -174,    42,
  660.   -195,  -136,  -196,  -197,  -198,   264,   265,   263,   259,   260,
  661.    261,   262,  -159,    40,  -153,  -154,  -166,  -134,  -167,  -187,
  662.     40,  -188,  -189,  -190,  -191,   273,  -192,  -193,    45,    43,
  663.   -194,  -174,  -159,  -159,  -165,    40,  -134,    42,  -165,    40,
  664.   -165,    40,  -168,  -169,  -170,  -183,    40,   127,  -141,  -192,
  665.    -52,   127,  -142,    40,   127,  -136,   327,    40,   127,   -59,
  666.    -59,   -59,   286,    42,    40,   -85,   -85,    40,   324,    40,
  667.   -156,   -59,  -138,   301,   314,   127,   127,   127,   -59,   127,
  668.    127,    40,    40,  -108,  -109,   -59,   127,    44,   127,    40,
  669.    127,  -117,    44,    47,    44,  -129,  -131,  -132,  -124,  -136,
  670.    127,    44,    40,   -79,    40,   127,   -87,   -90,   127,   -88,
  671.     44,   -86,   -59,    47,   127,    44,   127,    44,   -97,    40,
  672.    -95,   259,    42,    42,   127,   -93,   127,    44,   127,    44,
  673.    127,    44,   -59,  -133,   324,   127,  -140,  -138,   127,    40,
  674.     44,    44,   127,   127,   127,  -157,  -134,  -164,   -59,  -165,
  675.    127,    44,   275,    40,   -85,   -85,   127,    44,  -134,   127,
  676.   -155,    44,   271,   272,  -154,  -134,   270,   269,   268,  -191,
  677.     43,    45,    47,    42,  -193,  -193,   274,   127,    44,   127,
  678.     44,   127,  -157,   127,  -157,   127,  -157,    40,    40,    40,
  679.    127,    41,  -185,  -134,    42,   127,  -144,    61,    40,  -149,
  680.    127,    40,   127,    40,   127,    40,   -95,   -84,    58,  -192,
  681.   -199,  -134,  -192,  -143,    40,    44,   127,   -60,   -70,   -71,
  682.    -59,    42,  -176,    41,    44,  -110,  -103,  -104,  -117,  -119,
  683.   -122,   -59,  -131,    44,    40,   -74,   -75,   -76,   -77,    42,
  684.   -192,   127,    44,   -80,   -81,   -59,   -82,   -83,   127,    47,
  685.    -98,   -99,    42,  -107,  -192,   -97,   -97,   127,   -59,   -59,
  686.   -115,    47,  -134,  -136,    41,    44,  -140,    40,  -138,    41,
  687.     44,    41,    61,  -154,  -195,   -84,  -154,   127,  -166,  -188,
  688.   -188,    44,  -189,  -190,  -191,  -193,  -193,  -194,  -194,  -194,
  689.   -160,  -162,    41,    41,    41,  -157,  -157,  -157,  -184,    41,
  690.     44,  -138,  -134,  -147,  -150,  -192,  -148,  -134,   -60,   -60,
  691.    -60,    41,    41,  -192,    58,    44,  -134,  -157,    41,    44,
  692.     41,  -177,    44,  -178,  -179,  -180,    40,   266,   257,   259,
  693.     45,   264,   265,    47,   275,    58,  -181,    36,   127,  -109,
  694.     61,  -102,  -105,  -106,   267,  -120,  -125,  -126,  -127,  -128,
  695.    -59,   -95,  -198,    45,    43,   263,   264,   265,   259,    61,
  696.     41,    44,    58,    40,    41,    44,    44,    40,   -85,   -85,
  697.     41,    41,  -135,   127,  -141,    44,  -138,    41,  -140,    44,
  698.    127,  -154,    44,  -164,  -165,   127,    41,   127,  -136,  -154,
  699.   -154,   127,   127,   127,    41,    41,    41,   127,  -186,  -134,
  700.     42,    41,   127,    44,  -134,    41,    41,    41,    41,    41,
  701.     41,  -192,  -134,    41,    41,   127,   -71,   127,  -177,  -178,
  702.   -176,   259,  -111,  -134,    41,    44,    45,  -121,    44,    42,
  703.   -198,  -198,  -130,  -107,   -76,   -77,    42,   -80,   -81,   -81,
  704.    -84,   127,   127,  -141,   127,    41,  -138,   127,  -154,    61,
  705.   -161,  -163,   127,   127,   127,   127,  -138,  -145,  -150,    41,
  706.    127,   127,   127,   127,    41,    41,  -106,   267,    47,  -125,
  707.   -126,   -59,    41,    44,    41,    41,   127,   127,   127,   127,
  708.   -147,   127,   127,   326,    44,   127,  -107,    41,   127,  -150,
  709.     44,  -107 };
  710. yytabelem yydef[]={
  711.  
  712.      2,    -2,     1,     3,     5,     6,     7,     8,     0,    10,
  713.     20,     0,    11,    12,    13,    14,     0,     0,    16,    17,
  714.     18,    19,    24,    25,    26,    27,    28,    29,    30,    31,
  715.     32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
  716.     42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
  717.     52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
  718.     62,    63,    64,    65,    69,    79,     0,     0,   309,     0,
  719.      0,     0,     0,   102,     0,    76,    77,    78,     0,     0,
  720.      0,     0,     0,     0,     0,     0,   255,   255,     0,     0,
  721.    259,     0,     0,     0,     0,     0,   290,   292,   294,   329,
  722.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  723.      0,   153,   133,   135,   141,   214,   215,   216,   224,     0,
  724.      0,   270,   263,   304,   298,   301,     0,   247,     0,    75,
  725.     82,   136,   137,   138,   139,     0,   397,   398,     4,     9,
  726.     21,     0,    15,    22,     0,     0,     0,    89,     0,     0,
  727.      0,     0,     0,     0,   156,     0,    76,    77,    78,     0,
  728.    186,     0,   192,   194,   195,     0,     0,    93,     0,     0,
  729.      0,     0,   123,   117,   125,     0,   127,   128,     0,   122,
  730.      0,   143,   145,   146,     0,     0,   147,   149,   151,     0,
  731.      0,     0,   174,     0,   177,   179,     0,   181,   183,     0,
  732.    211,     0,   406,     0,     0,     0,     0,   229,     0,     0,
  733.    252,     0,   256,   257,   258,     0,     0,     0,   307,   308,
  734.    365,   367,   368,   369,   370,   371,   372,   373,   375,   376,
  735.    377,   378,     0,     0,     0,   261,   285,   287,   288,   343,
  736.      0,   344,   347,   349,   351,     0,   353,   355,     0,     0,
  737.    360,   363,     0,     0,     0,     0,   305,   306,     0,     0,
  738.      0,     0,     0,     0,     0,     0,     0,   340,     0,   379,
  739.    233,   237,     0,   234,   238,     0,     0,   243,   251,     0,
  740.      0,     0,    91,     0,   385,   391,   392,     0,   225,   231,
  741.      0,   335,   245,    74,   140,    23,   239,   250,     0,    90,
  742.     67,    83,   311,     0,   169,   171,   154,   157,   155,   159,
  743.    185,   187,     0,   189,     0,     0,     0,   209,   210,     0,
  744.     92,     0,     0,     0,     0,   114,     0,   124,   115,   118,
  745.    126,   119,     0,   121,   129,     0,   130,     0,   142,     0,
  746.    166,   405,     0,     0,   131,     0,   173,     0,   176,     0,
  747.    180,     0,     0,     0,     0,   218,     0,   226,   221,     0,
  748.      0,     0,   230,   253,   254,     0,   305,   281,   397,   284,
  749.    268,     0,     0,   385,   389,   390,   271,     0,     0,   260,
  750.      0,     0,     0,     0,     0,   287,     0,     0,     0,   352,
  751.      0,     0,     0,     0,   356,   357,     0,   273,   274,   277,
  752.    278,   302,     0,   296,     0,   299,     0,     0,     0,     0,
  753.    330,   331,     0,   336,     0,   341,     0,     0,   241,     0,
  754.     70,    83,    72,    83,    80,    83,   134,     0,     0,   353,
  755.    386,   387,     0,     0,     0,   246,    66,     0,    84,    85,
  756.     87,    88,     0,     0,     0,     0,     0,     0,   188,     0,
  757.    193,   397,   208,   207,   385,    94,     0,    96,    98,   100,
  758.    382,   103,     0,     0,     0,   108,   109,   110,   116,   120,
  759.    144,   148,     0,     0,   381,   150,   152,   132,   175,   178,
  760.    182,   184,   212,     0,     0,     0,     0,     0,     0,     0,
  761.      0,   374,     0,     0,   366,     0,     0,   262,   286,   345,
  762.    346,     0,   348,   350,    -2,   358,   359,   361,   362,   364,
  763.      0,     0,     0,     0,     0,     0,     0,     0,     0,   333,
  764.      0,   337,     0,     0,     0,   380,     0,     0,     0,     0,
  765.      0,   383,   393,     0,     0,     0,     0,     0,     0,     0,
  766.      0,   312,     0,   314,     0,   316,   311,   318,   319,   327,
  767.      0,   320,   321,   322,   323,   324,   325,   326,   168,   170,
  768.      0,   158,     0,   161,   163,   190,   196,   198,     0,   202,
  769.     -2,   200,   399,     0,     0,   402,   403,   404,    -2,     0,
  770.     95,     0,     0,     0,   104,     0,     0,   385,   112,   113,
  771.    165,   167,     0,   217,     0,     0,   227,     0,     0,     0,
  772.    265,     0,     0,   282,   283,   269,   384,   272,   367,   275,
  773.    279,   303,   297,   300,     0,     0,     0,   332,     0,   338,
  774.      0,   235,   240,     0,     0,     0,     0,     0,     0,   395,
  775.    394,     0,   388,   232,   264,    68,    86,   310,   313,   315,
  776.      0,   328,   172,   342,   160,     0,     0,     0,     0,     0,
  777.    400,   401,     0,     0,    97,    99,   101,     0,   107,   106,
  778.      0,   213,   219,     0,   222,     0,     0,   266,     0,     0,
  779.      0,     0,   291,   293,   295,   334,   339,     0,   248,     0,
  780.    244,    71,    73,    81,   396,   317,   162,   164,   191,   197,
  781.    199,   203,   204,     0,   105,   111,   220,   223,   228,   267,
  782.      0,   276,   280,     0,     0,   242,   205,   289,   236,   249,
  783.      0,   206 };
  784. typedef struct { char *t_name; int t_val; } yytoktype;
  785. #ifndef YYDEBUG
  786. # define YYDEBUG 0 /* don't allow debugging */
  787. #endif
  788.  
  789. /* @(#)yaccpar 1.3  com/cmd/lang/yacc,3.1,9021 9/7/89 18:46:37 */
  790. /*
  791. ** Skeleton parser driver for yacc output
  792. */
  793.  
  794. /*
  795. ** yacc user known macros and defines
  796. */
  797. #ifdef YYSPLIT
  798. #   define YYERROR return(-2)
  799. #else
  800. #   define YYERROR goto yyerrlab
  801. #endif
  802.  
  803. #define YYACCEPT return(0)
  804. #define YYABORT  return(1)
  805. #define YYBACKUP( newtoken, newvalue )\
  806. {\
  807.  if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  808.  {\
  809.   yyerror( "syntax error - cannot backup" );\
  810.   goto yyerrlab;\
  811.  }\
  812.  yychar = newtoken;\
  813.  yystate = *yyps;\
  814.  yylval = newvalue;\
  815.  goto yynewstate;\
  816. }
  817. #define YYRECOVERING() (!!yyerrflag)
  818. #ifndef YYDEBUG
  819. # define YYDEBUG 1 /* make debugging available */
  820. #endif
  821.  
  822. /*
  823. ** user known globals
  824. */
  825. int yydebug;   /* set to 1 to get debugging */
  826.  
  827. /*
  828. ** driver internal defines
  829. */
  830. #define YYFLAG  (-1000)
  831.  
  832. #ifdef YYSPLIT
  833. #   define YYSCODE { \
  834.    extern int (*yyf[])(); \
  835.    register int yyret; \
  836.    if (yyf[yytmp]) \
  837.        if ((yyret=(*yyf[yytmp])()) == -2) \
  838.         goto yyerrlab; \
  839.     else if (yyret>=0) return(yyret); \
  840.      }
  841. #endif
  842.  
  843. /*
  844. ** global variables used by the parser
  845. */
  846. YYSTYPE yyv[ YYMAXDEPTH ]; /* value stack */
  847. int yys[ YYMAXDEPTH ];  /* state stack */
  848.  
  849. YYSTYPE *yypv;   /* top of value stack */
  850. YYSTYPE *yypvt;   /* top of value stack for $vars */
  851. int *yyps;   /* top of state stack */
  852.  
  853. int yystate;   /* current state */
  854. int yytmp;   /* extra var (lasts between blocks) */
  855.  
  856. int yynerrs;   /* number of errors */
  857. int yyerrflag;   /* error recovery flag */
  858. int yychar;   /* current input token number */
  859.  
  860.  
  861.  
  862. /*
  863. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  864. */
  865. int
  866. yyparse()
  867. {
  868.  /*
  869.  ** Initialize externals - yyparse may be called more than once
  870.  */
  871.  yypv = &yyv[-1];
  872.  yyps = &yys[-1];
  873.  yystate = 0;
  874.  yytmp = 0;
  875.  yynerrs = 0;
  876.  yyerrflag = 0;
  877.  yychar = -1;
  878.  
  879.  goto yystack;
  880.  {
  881.   register YYSTYPE *yy_pv; /* top of value stack */
  882.   register int *yy_ps;  /* top of state stack */
  883.   register int yy_state;  /* current state */
  884.   register int  yy_n;  /* internal state number info */
  885.  
  886.   /*
  887.   ** get globals into registers.
  888.   ** branch to here only if YYBACKUP was called.
  889.   */
  890.  yynewstate:
  891.   yy_pv = yypv;
  892.   yy_ps = yyps;
  893.   yy_state = yystate;
  894.   goto yy_newstate;
  895.  
  896.   /*
  897.   ** get globals into registers.
  898.   ** either we just started, or we just finished a reduction
  899.   */
  900.  yystack:
  901.   yy_pv = yypv;
  902.   yy_ps = yyps;
  903.   yy_state = yystate;
  904.  
  905.   /*
  906.   ** top of for (;;) loop while no reductions done
  907.   */
  908.  yy_stack:
  909.   /*
  910.   ** put a state and value onto the stacks
  911.   */
  912.   if ( ++yy_ps >= &yys[ YYMAXDEPTH ] ) /* room on stack? */
  913.   {
  914.    yyerror( "yacc stack overflow" );
  915.    YYABORT;
  916.   }
  917.   *yy_ps = yy_state;
  918.   *++yy_pv = yyval;
  919.  
  920.   /*
  921.   ** we have a new state - find out what to do
  922.   */
  923.  yy_newstate:
  924.   if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  925.    goto yydefault;  /* simple state */
  926.   if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  927.    yychar = 0;  /* reached EOF */
  928.   if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  929.    goto yydefault;
  930.   if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
  931.   {
  932.    yychar = -1;
  933.    yyval = yylval;
  934.    yy_state = yy_n;
  935.    if ( yyerrflag > 0 )
  936.     yyerrflag--;
  937.    goto yy_stack;
  938.   }
  939.  
  940.  yydefault:
  941.   if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  942.   {
  943.    if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  944.     yychar = 0;  /* reached EOF */
  945.    /*
  946.    ** look through exception table
  947.    */
  948.    {
  949.     register int *yyxi = yyexca;
  950.  
  951.     while ( ( *yyxi != -1 ) ||
  952.      ( yyxi[1] != yy_state ) )
  953.     {
  954.      yyxi += 2;
  955.     }
  956.     while ( ( *(yyxi += 2) >= 0 ) &&
  957.      ( *yyxi != yychar ) )
  958.      ;
  959.     if ( ( yy_n = yyxi[1] ) < 0 )
  960.      YYACCEPT;
  961.    }
  962.   }
  963.  
  964.   /*
  965.   ** check for syntax error
  966.   */
  967.   if ( yy_n == 0 ) /* have an error */
  968.   {
  969.    /* no worry about speed here! */
  970.    switch ( yyerrflag )
  971.    {
  972.    case 0:  /* new error */
  973.     yyerror( "syntax error" );
  974.     goto skip_init;
  975.    yyerrlab:
  976.     /*
  977.     ** get globals into registers.
  978.     ** we have a user generated syntax type error
  979.     */
  980.     yy_pv = yypv;
  981.     yy_ps = yyps;
  982.     yy_state = yystate;
  983.     yynerrs++;
  984.    skip_init:
  985.    case 1:
  986.    case 2:  /* incompletely recovered error */
  987.      /* try again... */
  988.     yyerrflag = 3;
  989.     /*
  990.     ** find state where "error" is a legal
  991.     ** shift action
  992.     */
  993.     while ( yy_ps >= yys )
  994.     {
  995.      yy_n = yypact[ *yy_ps ] + YYERRCODE;
  996.      if ( yy_n >= 0 && yy_n < YYLAST &&
  997.       yychk[yyact[yy_n]] == YYERRCODE)     {
  998.       /*
  999.       ** simulate shift of "error"
  1000.       */
  1001.       yy_state = yyact[ yy_n ];
  1002.       goto yy_stack;
  1003.      }
  1004.      /*
  1005.      ** current state has no shift on
  1006.      ** "error", pop stack
  1007.      */
  1008.      yy_ps--;
  1009.      yy_pv--;
  1010.     }
  1011.     /*
  1012.     ** there is no state on stack with "error" as
  1013.     ** a valid shift.  give up.
  1014.     */
  1015.     YYABORT;
  1016.    case 3:  /* no shift yet; eat a token */
  1017.     if ( yychar == 0 ) /* reached EOF. quit */
  1018.      YYABORT;
  1019.     yychar = -1;
  1020.     goto yy_newstate;
  1021.    }
  1022.   }/* end if ( yy_n == 0 ) */
  1023.   /*
  1024.   ** reduction by production yy_n
  1025.   ** put stack tops, etc. so things right after switch
  1026.   */
  1027.   yytmp = yy_n;   /* value to switch over */
  1028.   yypvt = yy_pv;   /* $vars top of value stack */
  1029.   /*
  1030.   ** Look in goto table for next state
  1031.   ** Sorry about using yy_state here as temporary
  1032.   ** register variable, but why not, if it works...
  1033.   ** If yyr2[ yy_n ] doesn't have the low order bit
  1034.   ** set, then there is no action to be done for
  1035.   ** this reduction.  So, no saving & unsaving of
  1036.   ** registers done.  The only difference between the
  1037.   ** code just after the if and the body of the if is
  1038.   ** the goto yy_stack in the body.  This way the test
  1039.   ** can be made before the choice of what to do is needed.
  1040.   */
  1041.   {
  1042.    /* length of production doubled with extra bit */
  1043.    register int yy_len = yyr2[ yy_n ];
  1044.  
  1045.    if ( !( yy_len & 01 ) )
  1046.    {
  1047.     yy_len >>= 1;
  1048.     yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
  1049.     yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1050.      *( yy_ps -= yy_len ) + 1;
  1051.     if ( yy_state >= YYLAST ||
  1052.      yychk[ yy_state =
  1053.      yyact[ yy_state ] ] != -yy_n )
  1054.     {
  1055.      yy_state = yyact[ yypgo[ yy_n ] ];
  1056.     }
  1057.     goto yy_stack;
  1058.    }
  1059.    yy_len >>= 1;
  1060.    yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
  1061.    yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1062.     *( yy_ps -= yy_len ) + 1;
  1063.    if ( yy_state >= YYLAST ||
  1064.     yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1065.    {
  1066.     yy_state = yyact[ yypgo[ yy_n ] ];
  1067.    }
  1068.   }
  1069.      /* save until reenter driver code */
  1070.   yystate = yy_state;
  1071.   yyps = yy_ps;
  1072.   yypv = yy_pv;
  1073.  }
  1074.  /*
  1075.  ** code supplied by user is placed in this switch
  1076.  */
  1077.  
  1078.   switch(yytmp){
  1079.  
  1080. case 5:
  1081. # line 204 "fortran.y"
  1082. {
  1083.     /* Create id token for prog if unnamed. */
  1084.      if(current_module_hash == -1) {
  1085.        implied_id_token(&(yypvt[-0]),unnamed_prog);
  1086.        def_function(
  1087.     type_PROGRAM,&(yypvt[-0]),(Token*)NULL);
  1088.        current_module_hash =
  1089.          def_curr_module(&(yypvt[-0]));
  1090.        current_module_type = type_PROGRAM;
  1091.      }
  1092.      prev_stmt_class = curr_stmt_class;
  1093.      integer_context = FALSE;
  1094.    } /*NOTREACHED*/ break;
  1095. case 6:
  1096. # line 218 "fortran.y"
  1097. {
  1098.      if(current_module_hash == -1) {
  1099.        implied_id_token(&(yypvt[-0]),unnamed_prog);
  1100.        def_function(
  1101.     type_PROGRAM,&(yypvt[-0]),(Token*)NULL);
  1102.        current_module_hash =
  1103.          def_curr_module(&(yypvt[-0]));
  1104.        current_module_type = type_PROGRAM;
  1105.      }
  1106.      if(prev_stmt_class != tok_RETURN)
  1107.        do_RETURN(current_module_hash,&(yypvt[-0]));
  1108.      END_processing(&(yyval));
  1109.      goto_flag = prev_goto = FALSE;
  1110.      prev_stmt_class = curr_stmt_class;
  1111.    } /*NOTREACHED*/ break;
  1112. case 9:
  1113. # line 243 "fortran.y"
  1114. {
  1115.      if(executable_stmt)
  1116.        prev_goto = goto_flag;
  1117.    } /*NOTREACHED*/ break;
  1118. case 10:
  1119. # line 248 "fortran.y"
  1120. {
  1121.      if(executable_stmt) {
  1122.        if(prev_goto)
  1123.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1124.      "No path to this statement");
  1125.        prev_goto = goto_flag;
  1126.      }
  1127.    } /*NOTREACHED*/ break;
  1128. case 11:
  1129. # line 259 "fortran.y"
  1130. {
  1131.        exec_stmt_count = 0;
  1132.        executable_stmt = FALSE;
  1133.    } /*NOTREACHED*/ break;
  1134. case 12:
  1135. # line 264 "fortran.y"
  1136. {
  1137.        executable_stmt = FALSE;
  1138.    } /*NOTREACHED*/ break;
  1139. case 13:
  1140. # line 268 "fortran.y"
  1141. { /* handle statement functions correctly */
  1142.      if(is_true(STMT_FUNCTION_EXPR, yypvt[-0].subclass)
  1143.          && stmt_sequence_no <= seq_stmt_fun) {
  1144.        stmt_sequence_no = seq_stmt_fun;
  1145.        executable_stmt = FALSE;
  1146.      }
  1147.      else {
  1148.        stmt_sequence_no = seq_exec;
  1149.        ++exec_stmt_count;
  1150.        executable_stmt = TRUE;
  1151.      }
  1152.    } /*NOTREACHED*/ break;
  1153. case 14:
  1154. # line 281 "fortran.y"
  1155. {
  1156.        stmt_sequence_no = seq_exec;
  1157.        ++exec_stmt_count;
  1158.        executable_stmt = TRUE;
  1159.    } /*NOTREACHED*/ break;
  1160. case 15:
  1161. # line 287 "fortran.y"
  1162. {
  1163.        executable_stmt = TRUE;
  1164.        if(stmt_sequence_no == 0)
  1165.          stmt_sequence_no = seq_header;
  1166.        complex_const_allowed = FALSE; /* turn off flags */
  1167.        inside_format=FALSE;
  1168.        integer_context = FALSE;
  1169.        yyerrok; /* (error message already given) */
  1170.    } /*NOTREACHED*/ break;
  1171. case 16:
  1172. # line 299 "fortran.y"
  1173. {
  1174.        current_module_type = type_PROGRAM;
  1175.    } /*NOTREACHED*/ break;
  1176. case 17:
  1177. # line 303 "fortran.y"
  1178. {
  1179.        current_module_type = type_SUBROUTINE;
  1180.    } /*NOTREACHED*/ break;
  1181. case 18:
  1182. # line 307 "fortran.y"
  1183. {
  1184.        current_module_type = type_SUBROUTINE;
  1185.    } /*NOTREACHED*/ break;
  1186. case 19:
  1187. # line 311 "fortran.y"
  1188. {
  1189.        current_module_type = type_BLOCK_DATA;
  1190.    } /*NOTREACHED*/ break;
  1191. case 23:
  1192. # line 324 "fortran.y"
  1193. {
  1194. #ifdef ALLOW_INCLUDE
  1195.      if(f77_standard) {
  1196.          nonstandard(yypvt[-2].line_num,yypvt[-2].col_num);
  1197.      }
  1198.       open_include_file(yypvt[-1].value.string);
  1199. #else
  1200.      syntax_error(yypvt[-2].line_num,yypvt[-2].col_num,
  1201.     "statement not permitted");
  1202. #endif
  1203.     } /*NOTREACHED*/ break;
  1204. case 24:
  1205. # line 344 "fortran.y"
  1206. {
  1207.         if(stmt_sequence_no < seq_implicit) {
  1208.        stmt_sequence_no = seq_implicit;
  1209.         }
  1210.         goto_flag = prev_goto = FALSE;
  1211.    } /*NOTREACHED*/ break;
  1212. case 25:
  1213. # line 351 "fortran.y"
  1214. {
  1215.         if(stmt_sequence_no < seq_implicit) {
  1216.     stmt_sequence_no = seq_implicit;
  1217.         }
  1218.    } /*NOTREACHED*/ break;
  1219. case 26:
  1220. # line 357 "fortran.y"
  1221. {
  1222.         if(stmt_sequence_no > seq_specif) {
  1223.        syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1224.      "Statement out of order.");
  1225.         }
  1226.         else {
  1227.     if(stmt_sequence_no < seq_implicit) {
  1228.        stmt_sequence_no = seq_implicit;
  1229.     }
  1230.         }
  1231.    } /*NOTREACHED*/ break;
  1232. case 27:
  1233. # line 369 "fortran.y"
  1234. {
  1235.         if(stmt_sequence_no > seq_implicit) {
  1236.      syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1237.      "Statement out of order.");
  1238.         }
  1239.         else {
  1240.         stmt_sequence_no = seq_implicit;
  1241.         }
  1242.    } /*NOTREACHED*/ break;
  1243. case 28:
  1244. # line 379 "fortran.y"
  1245. {
  1246.         if(stmt_sequence_no < seq_stmt_fun) {
  1247.     stmt_sequence_no = seq_stmt_fun;
  1248.          }
  1249.    } /*NOTREACHED*/ break;
  1250. case 29:
  1251. # line 385 "fortran.y"
  1252. {
  1253.        if(stmt_sequence_no > seq_specif) {
  1254.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1255.      "Statement out of order.");
  1256.        }
  1257.        else {
  1258.     stmt_sequence_no = seq_specif;
  1259.        }
  1260.    } /*NOTREACHED*/ break;
  1261. case 30:
  1262. # line 395 "fortran.y"
  1263. {
  1264.        if(stmt_sequence_no > seq_specif) {
  1265.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1266.      "Statement out of order.");
  1267.        }
  1268.        else {
  1269.     stmt_sequence_no = seq_specif;
  1270.        }
  1271.    } /*NOTREACHED*/ break;
  1272. case 31:
  1273. # line 405 "fortran.y"
  1274. {
  1275.        if(stmt_sequence_no > seq_specif) {
  1276.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1277.      "Statement out of order.");
  1278.        }
  1279.        else {
  1280.     stmt_sequence_no = seq_specif;
  1281.        }
  1282.    } /*NOTREACHED*/ break;
  1283. case 32:
  1284. # line 415 "fortran.y"
  1285. {
  1286.        if(stmt_sequence_no > seq_specif) {
  1287.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1288.      "Statement out of order.");
  1289.        }
  1290.        else {
  1291.     stmt_sequence_no = seq_specif;
  1292.        }
  1293.    } /*NOTREACHED*/ break;
  1294. case 33:
  1295. # line 425 "fortran.y"
  1296. {
  1297.        if(stmt_sequence_no > seq_specif) {
  1298.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1299.      "Statement out of order.");
  1300.        }
  1301.        else {
  1302.     stmt_sequence_no = seq_specif;
  1303.        }
  1304.    } /*NOTREACHED*/ break;
  1305. case 34:
  1306. # line 435 "fortran.y"
  1307. {
  1308.        if(stmt_sequence_no > seq_specif) {
  1309.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1310.      "Statement out of order.");
  1311.        }
  1312.        else {
  1313.     stmt_sequence_no = seq_specif;
  1314.        }
  1315.    } /*NOTREACHED*/ break;
  1316. case 35:
  1317. # line 445 "fortran.y"
  1318. {
  1319.        if(stmt_sequence_no > seq_specif) {
  1320.     syntax_error(yypvt[-0].line_num, NO_COL_NUM,
  1321.      "Statement out of order.");
  1322.        }
  1323.        else {
  1324.     stmt_sequence_no = seq_specif;
  1325.        }
  1326.    } /*NOTREACHED*/ break;
  1327. case 36:
  1328. # line 460 "fortran.y"
  1329. {
  1330.        goto_flag=FALSE;
  1331.    } /*NOTREACHED*/ break;
  1332. case 37:
  1333. # line 464 "fortran.y"
  1334. {
  1335.        goto_flag=FALSE;
  1336.    } /*NOTREACHED*/ break;
  1337. case 38:
  1338. # line 468 "fortran.y"
  1339. {
  1340.        goto_flag=TRUE;
  1341.    } /*NOTREACHED*/ break;
  1342. case 39:
  1343. # line 472 "fortran.y"
  1344. {
  1345.        goto_flag=FALSE; /* fallthru allowed */
  1346.    } /*NOTREACHED*/ break;
  1347. case 40:
  1348. # line 476 "fortran.y"
  1349. {
  1350.        goto_flag=TRUE;
  1351.    } /*NOTREACHED*/ break;
  1352. case 41:
  1353. # line 480 "fortran.y"
  1354. {
  1355.        goto_flag=TRUE;
  1356.    } /*NOTREACHED*/ break;
  1357. case 42:
  1358. # line 484 "fortran.y"
  1359. {
  1360.        goto_flag=FALSE;
  1361.    } /*NOTREACHED*/ break;
  1362. case 43:
  1363. # line 488 "fortran.y"
  1364. {
  1365.        goto_flag=TRUE;
  1366.    } /*NOTREACHED*/ break;
  1367. case 44:
  1368. # line 492 "fortran.y"
  1369. {
  1370.        goto_flag=FALSE;
  1371.    } /*NOTREACHED*/ break;
  1372. case 45:
  1373. # line 496 "fortran.y"
  1374. {
  1375.        goto_flag=FALSE;
  1376.    } /*NOTREACHED*/ break;
  1377. case 46:
  1378. # line 500 "fortran.y"
  1379. {
  1380.        goto_flag=FALSE;
  1381.    } /*NOTREACHED*/ break;
  1382. case 47:
  1383. # line 504 "fortran.y"
  1384. {
  1385.        goto_flag=FALSE;
  1386.    } /*NOTREACHED*/ break;
  1387. case 48:
  1388. # line 508 "fortran.y"
  1389. {
  1390.        goto_flag=FALSE;
  1391.    } /*NOTREACHED*/ break;
  1392. case 49:
  1393. # line 512 "fortran.y"
  1394. {
  1395.        goto_flag=FALSE;
  1396.    } /*NOTREACHED*/ break;
  1397. case 50:
  1398. # line 516 "fortran.y"
  1399. {
  1400.        goto_flag=FALSE;
  1401.    } /*NOTREACHED*/ break;
  1402. case 51:
  1403. # line 520 "fortran.y"
  1404. {
  1405.        goto_flag=FALSE;
  1406.    } /*NOTREACHED*/ break;
  1407. case 52:
  1408. # line 524 "fortran.y"
  1409. {
  1410.        goto_flag=FALSE;
  1411.    } /*NOTREACHED*/ break;
  1412. case 53:
  1413. # line 528 "fortran.y"
  1414. {
  1415.        goto_flag=FALSE;
  1416.    } /*NOTREACHED*/ break;
  1417. case 54:
  1418. # line 532 "fortran.y"
  1419. {
  1420.        goto_flag=FALSE;
  1421.    } /*NOTREACHED*/ break;
  1422. case 55:
  1423. # line 536 "fortran.y"
  1424. {
  1425.        goto_flag=FALSE;
  1426.    } /*NOTREACHED*/ break;
  1427. case 56:
  1428. # line 540 "fortran.y"
  1429. {
  1430.        goto_flag=FALSE;
  1431.    } /*NOTREACHED*/ break;
  1432. case 57:
  1433. # line 544 "fortran.y"
  1434. {
  1435.        goto_flag=TRUE;
  1436.    } /*NOTREACHED*/ break;
  1437. case 58:
  1438. # line 551 "fortran.y"
  1439. {
  1440.        goto_flag=FALSE;
  1441.    } /*NOTREACHED*/ break;
  1442. case 59:
  1443. # line 555 "fortran.y"
  1444. {
  1445.        goto_flag=FALSE;
  1446.    } /*NOTREACHED*/ break;
  1447. case 60:
  1448. # line 559 "fortran.y"
  1449. {
  1450.        prev_goto = goto_flag =FALSE;
  1451.    } /*NOTREACHED*/ break;
  1452. case 61:
  1453. # line 563 "fortran.y"
  1454. {
  1455.        prev_goto = goto_flag =FALSE;
  1456.    } /*NOTREACHED*/ break;
  1457. case 62:
  1458. # line 567 "fortran.y"
  1459. {
  1460.        prev_goto = goto_flag =FALSE;
  1461.    } /*NOTREACHED*/ break;
  1462. case 63:
  1463. # line 571 "fortran.y"
  1464. {
  1465.        goto_flag=FALSE;
  1466.    } /*NOTREACHED*/ break;
  1467. case 64:
  1468. # line 575 "fortran.y"
  1469. {
  1470.        goto_flag=FALSE;
  1471.    } /*NOTREACHED*/ break;
  1472. case 65:
  1473. # line 581 "fortran.y"
  1474. {check_seq_header(&(yypvt[-0]));} /*NOTREACHED*/ break;
  1475. case 66:
  1476. # line 583 "fortran.y"
  1477. {
  1478.         def_function(
  1479.     type_PROGRAM,&(yypvt[-1]),(Token*)NULL);
  1480.         current_module_hash =
  1481.           def_curr_module(&(yypvt[-1]));
  1482.    } /*NOTREACHED*/ break;
  1483. case 67:
  1484. # line 596 "fortran.y"
  1485. {
  1486.      do_ENTRY(&(yypvt[-1]),(Token*)NULL
  1487.        ,current_module_hash);
  1488.    } /*NOTREACHED*/ break;
  1489. case 68:
  1490. # line 601 "fortran.y"
  1491. {
  1492.      do_ENTRY(&(yypvt[-4]),&(yypvt[-2])
  1493.        ,current_module_hash);
  1494.         if(debug_parser)
  1495.     print_exprlist("entry stmt",&(yypvt[-2]));
  1496.    } /*NOTREACHED*/ break;
  1497. case 70:
  1498. # line 615 "fortran.y"
  1499. {
  1500.     def_function(
  1501.     current_datatype,&(yypvt[-1]),(Token*)NULL);
  1502.     current_module_hash=
  1503.       def_curr_module(&(yypvt[-1]));
  1504.    } /*NOTREACHED*/ break;
  1505. case 71:
  1506. # line 623 "fortran.y"
  1507. {
  1508.     def_function(
  1509.     current_datatype,&(yypvt[-4]),&(yypvt[-2]));
  1510.     current_module_hash=
  1511.       def_curr_module(&(yypvt[-4]));
  1512.     if(debug_parser)
  1513.       print_exprlist("function stmt",&(yypvt[-2]));
  1514.    } /*NOTREACHED*/ break;
  1515. case 72:
  1516. # line 632 "fortran.y"
  1517. {
  1518.     def_function(
  1519.     type_UNDECL,&(yypvt[-1]),(Token*)NULL);
  1520.     current_module_hash=
  1521.       def_curr_module(&(yypvt[-1]));
  1522.    } /*NOTREACHED*/ break;
  1523. case 73:
  1524. # line 640 "fortran.y"
  1525. {
  1526.     def_function(
  1527.     type_UNDECL,&(yypvt[-4]),&(yypvt[-2]));
  1528.     current_module_hash=
  1529.       def_curr_module(&(yypvt[-4]));
  1530.     if(debug_parser)
  1531.       print_exprlist("function stmt",&(yypvt[-2]));
  1532.    } /*NOTREACHED*/ break;
  1533. case 74:
  1534. # line 652 "fortran.y"
  1535. {
  1536.      check_seq_header(&(yypvt[-0]));
  1537.    } /*NOTREACHED*/ break;
  1538. case 75:
  1539. # line 659 "fortran.y"
  1540. {
  1541.      check_seq_header(&(yypvt[-0]));
  1542.    } /*NOTREACHED*/ break;
  1543. case 80:
  1544. # line 678 "fortran.y"
  1545. {
  1546.      def_function(
  1547.      type_SUBROUTINE,&(yypvt[-1]),(Token*)NULL);
  1548.      current_module_hash=
  1549.        def_curr_module(&(yypvt[-1]));
  1550.    } /*NOTREACHED*/ break;
  1551. case 81:
  1552. # line 686 "fortran.y"
  1553. {
  1554.      def_function(
  1555.      type_SUBROUTINE,&(yypvt[-4]),&(yypvt[-2]));
  1556.      current_module_hash=
  1557.        def_curr_module(&(yypvt[-4]));
  1558.      if(debug_parser)
  1559.        print_exprlist("subroutine stmt",&(yypvt[-2]));
  1560.    } /*NOTREACHED*/ break;
  1561. case 82:
  1562. # line 697 "fortran.y"
  1563. {
  1564.      check_seq_header(&(yypvt[-0]));
  1565.    } /*NOTREACHED*/ break;
  1566. case 83:
  1567. # line 703 "fortran.y"
  1568. {
  1569.        yyval.next_token = (Token*)NULL;
  1570.    } /*NOTREACHED*/ break;
  1571. case 85:
  1572. # line 710 "fortran.y"
  1573. {
  1574.        yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
  1575.    } /*NOTREACHED*/ break;
  1576. case 86:
  1577. # line 714 "fortran.y"
  1578. {
  1579.        yyval.next_token = append_token(yypvt[-2].next_token,&(yypvt[-0]));
  1580.    } /*NOTREACHED*/ break;
  1581. case 87:
  1582. # line 720 "fortran.y"
  1583. {
  1584.         def_arg_name(&(yypvt[-0]));
  1585.         primary_id_expr(&(yypvt[-0]),&(yyval));
  1586.    } /*NOTREACHED*/ break;
  1587. case 88:
  1588. # line 725 "fortran.y"
  1589. {
  1590.         yyval.class = type_byte(class_LABEL,type_LABEL);
  1591.         yyval.subclass = 0;
  1592.    } /*NOTREACHED*/ break;
  1593. case 90:
  1594. # line 736 "fortran.y"
  1595. {
  1596.      def_function(
  1597.      type_BLOCK_DATA,&(yypvt[-1]),(Token*)NULL);
  1598.      current_module_hash=
  1599.        def_curr_module(&(yypvt[-1]));
  1600.    } /*NOTREACHED*/ break;
  1601. case 91:
  1602. # line 745 "fortran.y"
  1603. {
  1604.      check_seq_header(&(yypvt[-0]));
  1605.    } /*NOTREACHED*/ break;
  1606. case 95:
  1607. # line 759 "fortran.y"
  1608. {
  1609.         def_array_dim(&(yypvt[-3]),&(yypvt[-1]));
  1610.    } /*NOTREACHED*/ break;
  1611. case 96:
  1612. # line 766 "fortran.y"
  1613. {
  1614.         yyval.class = 1;
  1615.         yyval.subclass = yypvt[-0].subclass;
  1616.    } /*NOTREACHED*/ break;
  1617. case 97:
  1618. # line 771 "fortran.y"
  1619. {
  1620.         yyval.class = yypvt[-2].class + 1;
  1621.         yyval.subclass = yypvt[-2].subclass *
  1622.           yypvt[-0].subclass;
  1623.    } /*NOTREACHED*/ break;
  1624. case 98:
  1625. # line 779 "fortran.y"
  1626. {
  1627.         yyval.subclass = yypvt[-0].value.integer;
  1628.    } /*NOTREACHED*/ break;
  1629. case 99:
  1630. # line 783 "fortran.y"
  1631. {
  1632.         yyval.subclass = yypvt[-0].value.integer -
  1633.     yypvt[-2].value.integer + 1;
  1634.    } /*NOTREACHED*/ break;
  1635. case 100:
  1636. # line 788 "fortran.y"
  1637. {
  1638.         yyval.subclass = 0;
  1639.    } /*NOTREACHED*/ break;
  1640. case 101:
  1641. # line 792 "fortran.y"
  1642. {
  1643.         yyval.subclass = 0;
  1644.    } /*NOTREACHED*/ break;
  1645. case 102:
  1646. # line 798 "fortran.y"
  1647. {equivalence_flag = TRUE;} /*NOTREACHED*/ break;
  1648. case 103:
  1649. # line 799 "fortran.y"
  1650. {equivalence_flag = FALSE;} /*NOTREACHED*/ break;
  1651. case 106:
  1652. # line 807 "fortran.y"
  1653. {
  1654.      equivalence(&(yypvt[-2]), &(yypvt[-0]));
  1655.    } /*NOTREACHED*/ break;
  1656. case 107:
  1657. # line 811 "fortran.y"
  1658. {
  1659.      equivalence(&(yypvt[-2]), &(yypvt[-0]));
  1660.    } /*NOTREACHED*/ break;
  1661. case 108:
  1662. # line 818 "fortran.y"
  1663. {
  1664.         def_equiv_name(&(yypvt[-0]));
  1665.    } /*NOTREACHED*/ break;
  1666. case 109:
  1667. # line 822 "fortran.y"
  1668. {
  1669.         def_equiv_name(&(yypvt[-0]));
  1670.    } /*NOTREACHED*/ break;
  1671. case 110:
  1672. # line 826 "fortran.y"
  1673. {
  1674.         def_equiv_name(&(yypvt[-0]));
  1675.    } /*NOTREACHED*/ break;
  1676. case 114:
  1677. # line 841 "fortran.y"
  1678. {
  1679.         implied_id_token(&(yyval),blank_com_name);
  1680.         def_com_block(&(yyval), &(yypvt[-1]));
  1681.         if(is_true(COMMA_FLAG,yypvt[-1].subclass))
  1682.        syntax_error(
  1683.      yypvt[-1].line_num,yypvt[-1].col_num,
  1684.      "trailing comma");
  1685.         if(debug_parser)
  1686.     print_comlist("blank common",&(yypvt[-1]));
  1687.  
  1688.    } /*NOTREACHED*/ break;
  1689. case 115:
  1690. # line 853 "fortran.y"
  1691. {
  1692.         if(is_true(COMMA_FLAG,yypvt[-1].subclass))
  1693.     syntax_error(
  1694.      yypvt[-1].line_num,yypvt[-1].col_num,
  1695.      "trailing comma");
  1696.  
  1697.    } /*NOTREACHED*/ break;
  1698. case 116:
  1699. # line 861 "fortran.y"
  1700. {
  1701.         implied_id_token(&(yyval),blank_com_name);
  1702.         def_com_block(&(yyval),&(yypvt[-2]));
  1703.         if(is_true(COMMA_FLAG,yypvt[-1].subclass))
  1704.     syntax_error(
  1705.      yypvt[-1].line_num,yypvt[-1].col_num,
  1706.      "trailing comma");
  1707.         if(debug_parser)
  1708.     print_comlist("blank common",&(yypvt[-2]));
  1709.  
  1710.    } /*NOTREACHED*/ break;
  1711. case 117:
  1712. # line 878 "fortran.y"
  1713. {
  1714.         yyval.subclass = yypvt[-0].subclass;
  1715.    } /*NOTREACHED*/ break;
  1716. case 118:
  1717. # line 882 "fortran.y"
  1718. {
  1719.         yyval.subclass = yypvt[-0].subclass;
  1720.         yyval.line_num = yypvt[-0].line_num;
  1721.         yyval.col_num = yypvt[-0].col_num;
  1722.    } /*NOTREACHED*/ break;
  1723. case 119:
  1724. # line 890 "fortran.y"
  1725. {
  1726.         def_com_block(&(yypvt[-1]),&(yypvt[-0]));
  1727.         yyval.subclass = yypvt[-0].subclass;
  1728.         yyval.line_num = yypvt[-0].line_num;
  1729.         yyval.col_num = yypvt[-0].col_num;
  1730.         if(debug_parser)
  1731.     print_comlist("labeled common",&(yypvt[-0]));
  1732.    } /*NOTREACHED*/ break;
  1733. case 120:
  1734. # line 901 "fortran.y"
  1735. {
  1736.         yyval = yypvt[-1];
  1737.    } /*NOTREACHED*/ break;
  1738. case 121:
  1739. # line 906 "fortran.y"
  1740. {
  1741.         implied_id_token(&(yyval),blank_com_name);
  1742.    } /*NOTREACHED*/ break;
  1743. case 122:
  1744. # line 910 "fortran.y"
  1745. {
  1746.         implied_id_token(&(yyval),blank_com_name);
  1747.    } /*NOTREACHED*/ break;
  1748. case 123:
  1749. # line 916 "fortran.y"
  1750. {
  1751.        yyval.subclass = yypvt[-0].subclass;
  1752.        yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
  1753.    } /*NOTREACHED*/ break;
  1754. case 124:
  1755. # line 921 "fortran.y"
  1756. {
  1757.        if(!is_true(COMMA_FLAG,yypvt[-1].subclass))
  1758.     syntax_error(
  1759.      yypvt[-1].line_num,yypvt[-1].col_num,
  1760.      "missing comma");
  1761.        yyval.subclass = yypvt[-0].subclass;
  1762.        yyval.line_num = yypvt[-0].line_num;
  1763.        yyval.col_num = yypvt[-0].col_num;
  1764.        yyval.next_token = append_token(yypvt[-1].next_token,&(yypvt[-0]));
  1765.    } /*NOTREACHED*/ break;
  1766. case 125:
  1767. # line 934 "fortran.y"
  1768. {      /* no comma */
  1769.         yyval.subclass = yypvt[-0].subclass;
  1770.         make_false(COMMA_FLAG,yyval.subclass);
  1771.    } /*NOTREACHED*/ break;
  1772. case 126:
  1773. # line 939 "fortran.y"
  1774. {      /* has comma */
  1775.         yyval.subclass = yypvt[-1].subclass;
  1776.         make_true(COMMA_FLAG,yyval.subclass);
  1777.       } /*NOTREACHED*/ break;
  1778. case 127:
  1779. # line 946 "fortran.y"
  1780. {
  1781.         def_com_variable(&(yypvt[-0]));
  1782.         primary_id_expr(&(yypvt[-0]),&(yyval));
  1783.    } /*NOTREACHED*/ break;
  1784. case 128:
  1785. # line 951 "fortran.y"
  1786. {
  1787.         def_com_variable(&(yypvt[-0]));
  1788.         primary_id_expr(&(yypvt[-0]),&(yyval));
  1789.    } /*NOTREACHED*/ break;
  1790. case 134:
  1791. # line 969 "fortran.y"
  1792. {
  1793.     /* Only REAL*8 is actually recognized */
  1794.        if(current_datatype == type_REAL
  1795.           && yypvt[-0].value.integer == 8)
  1796.     current_datatype = type_DP;
  1797.  
  1798.         if(f77_standard) {
  1799.     nonstandard(yypvt[-0].line_num,yypvt[-0].col_num);
  1800.         }
  1801.    } /*NOTREACHED*/ break;
  1802. case 136:
  1803. # line 984 "fortran.y"
  1804. {
  1805.         current_datatype = type_INTEGER;
  1806.         integer_context = TRUE;
  1807.    } /*NOTREACHED*/ break;
  1808. case 137:
  1809. # line 989 "fortran.y"
  1810. {
  1811.         current_datatype = type_REAL;
  1812.         integer_context = TRUE;
  1813.    } /*NOTREACHED*/ break;
  1814. case 138:
  1815. # line 994 "fortran.y"
  1816. {
  1817.         current_datatype = type_COMPLEX;
  1818.         integer_context = TRUE;
  1819.    } /*NOTREACHED*/ break;
  1820. case 139:
  1821. # line 999 "fortran.y"
  1822. {
  1823.         current_datatype = type_LOGICAL;
  1824.         integer_context = TRUE;
  1825.    } /*NOTREACHED*/ break;
  1826. case 140:
  1827. # line 1006 "fortran.y"
  1828. {
  1829.         current_datatype = type_DP;
  1830.    } /*NOTREACHED*/ break;
  1831. case 141:
  1832. # line 1012 "fortran.y"
  1833. {
  1834.         current_datatype = type_STRING;
  1835.         integer_context = TRUE;
  1836.    } /*NOTREACHED*/ break;
  1837. case 142:
  1838. # line 1019 "fortran.y"
  1839. {
  1840.         current_datatype = type_STRING;
  1841.    } /*NOTREACHED*/ break;
  1842. case 145:
  1843. # line 1029 "fortran.y"
  1844. {
  1845.         declare_type(&(yypvt[-0]),current_datatype);
  1846.    } /*NOTREACHED*/ break;
  1847. case 146:
  1848. # line 1033 "fortran.y"
  1849. {
  1850.         declare_type(&(yypvt[-0]),current_datatype);
  1851.    } /*NOTREACHED*/ break;
  1852. case 149:
  1853. # line 1043 "fortran.y"
  1854. {
  1855.         declare_type(&(yypvt[-0]),current_datatype);
  1856.    } /*NOTREACHED*/ break;
  1857. case 150:
  1858. # line 1047 "fortran.y"
  1859. {
  1860.         declare_type(&(yypvt[-2]),current_datatype);
  1861.    } /*NOTREACHED*/ break;
  1862. case 151:
  1863. # line 1051 "fortran.y"
  1864. {
  1865.         declare_type(&(yypvt[-0]),current_datatype);
  1866.    } /*NOTREACHED*/ break;
  1867. case 152:
  1868. # line 1055 "fortran.y"
  1869. {
  1870.         declare_type(&(yypvt[-2]),current_datatype);
  1871.    } /*NOTREACHED*/ break;
  1872. case 153:
  1873. # line 1062 "fortran.y"
  1874. {implicit_flag=TRUE;} /*NOTREACHED*/ break;
  1875. case 154:
  1876. # line 1066 "fortran.y"
  1877. {
  1878.        {implicit_flag=FALSE;}
  1879.        if(implicit_none) {
  1880.     syntax_error(yypvt[-2].line_num,yypvt[-2].col_num,
  1881.          "conflicts with IMPLICIT NONE");
  1882.        }
  1883.        else {
  1884.     implicit_type_given = TRUE;
  1885.        }
  1886.    } /*NOTREACHED*/ break;
  1887. case 155:
  1888. # line 1077 "fortran.y"
  1889. {
  1890.        int h=yypvt[-1].value.integer;
  1891.        {implicit_flag=FALSE;}
  1892.        if( strcmp(hashtab[h].name,"NONE") == 0 ) {
  1893.     if(implicit_type_given) {
  1894.         syntax_error(yypvt[-2].line_num,yypvt[-2].col_num,
  1895.       "conflicts with IMPLICIT statement");
  1896.     }
  1897.     else {
  1898.         if(f77_standard)
  1899.           nonstandard(yypvt[-1].line_num,yypvt[-1].col_num);
  1900.         implicit_none = TRUE;
  1901.     }
  1902.        }
  1903.        else {
  1904.     syntax_error(yypvt[-1].line_num,yypvt[-1].col_num,
  1905.          "unknown keyword -- ignored");
  1906.        }
  1907.    } /*NOTREACHED*/ break;
  1908. case 157:
  1909. # line 1099 "fortran.y"
  1910. {initial_flag = TRUE;} /*NOTREACHED*/ break;
  1911. case 159:
  1912. # line 1105 "fortran.y"
  1913. {implicit_letter_flag = TRUE;} /*NOTREACHED*/ break;
  1914. case 160:
  1915. # line 1106 "fortran.y"
  1916. {implicit_letter_flag = FALSE;} /*NOTREACHED*/ break;
  1917. case 163:
  1918. # line 1114 "fortran.y"
  1919. {
  1920.         set_implicit_type(current_datatype,
  1921.           yypvt[-0].subclass,yypvt[-0].subclass);
  1922.    } /*NOTREACHED*/ break;
  1923. case 164:
  1924. # line 1119 "fortran.y"
  1925. {
  1926.         set_implicit_type(current_datatype,
  1927.      yypvt[-2].subclass,yypvt[-0].subclass);
  1928.    } /*NOTREACHED*/ break;
  1929. case 171:
  1930. # line 1140 "fortran.y"
  1931. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  1932. case 172:
  1933. # line 1142 "fortran.y"
  1934. {
  1935.         def_parameter(&(yypvt[-3]),&(yypvt[-0]));
  1936.         complex_const_allowed = FALSE;
  1937.    } /*NOTREACHED*/ break;
  1938. case 174:
  1939. # line 1153 "fortran.y"
  1940. {
  1941.         def_ext_name(&(yypvt[-0]));
  1942.    } /*NOTREACHED*/ break;
  1943. case 175:
  1944. # line 1157 "fortran.y"
  1945. {
  1946.         def_ext_name(&(yypvt[-0]));
  1947.    } /*NOTREACHED*/ break;
  1948. case 177:
  1949. # line 1167 "fortran.y"
  1950. {
  1951.         def_intrins_name(&(yypvt[-0]));
  1952.    } /*NOTREACHED*/ break;
  1953. case 178:
  1954. # line 1171 "fortran.y"
  1955. {
  1956.         def_intrins_name(&(yypvt[-0]));
  1957.    } /*NOTREACHED*/ break;
  1958. case 183:
  1959. # line 1186 "fortran.y"
  1960. {
  1961.         ref_variable(&(yypvt[-0]));
  1962.    } /*NOTREACHED*/ break;
  1963. case 184:
  1964. # line 1190 "fortran.y"
  1965. {
  1966.         def_com_block(&(yypvt[-1]),(Token*)NULL);
  1967.    } /*NOTREACHED*/ break;
  1968. case 189:
  1969. # line 1205 "fortran.y"
  1970. {complex_const_allowed=TRUE;} /*NOTREACHED*/ break;
  1971. case 190:
  1972. # line 1207 "fortran.y"
  1973. {complex_const_allowed=FALSE;} /*NOTREACHED*/ break;
  1974. case 194:
  1975. # line 1216 "fortran.y"
  1976. {
  1977.         use_lvalue(&(yypvt[-0]));
  1978.    } /*NOTREACHED*/ break;
  1979. case 201:
  1980. # line 1232 "fortran.y"
  1981. {
  1982.         use_parameter(&(yypvt[-0]));
  1983.    } /*NOTREACHED*/ break;
  1984. case 203:
  1985. # line 1239 "fortran.y"
  1986. {
  1987.         use_parameter(&(yypvt[-0]));
  1988.    } /*NOTREACHED*/ break;
  1989. case 204:
  1990. # line 1245 "fortran.y"
  1991. {
  1992.        use_implied_do_index(&(yypvt[-3]));
  1993.    } /*NOTREACHED*/ break;
  1994. case 209:
  1995. # line 1259 "fortran.y"
  1996. {
  1997.         use_lvalue(&(yypvt[-0]));
  1998.    } /*NOTREACHED*/ break;
  1999. case 211:
  2000. # line 1267 "fortran.y"
  2001. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  2002. case 212:
  2003. # line 1268 "fortran.y"
  2004. {
  2005.      assignment_stmt_type(&(yypvt[-3]),&(yypvt[-2]),
  2006.      &(yypvt[-0]));
  2007.      complex_const_allowed = FALSE;
  2008.    } /*NOTREACHED*/ break;
  2009. case 213:
  2010. # line 1274 "fortran.y"
  2011. {
  2012.     /* Clear u-b-s flags spuriously set */
  2013.      if(is_true(STMT_FUNCTION_EXPR, yypvt[-5].subclass)
  2014.          && stmt_sequence_no <= seq_stmt_fun)
  2015.         stmt_function_stmt(&(yypvt[-5]));
  2016.           } /*NOTREACHED*/ break;
  2017. case 217:
  2018. # line 1291 "fortran.y"
  2019. {
  2020.        do_ASSIGN(&(yypvt[-1]));
  2021.    } /*NOTREACHED*/ break;
  2022. case 221:
  2023. # line 1308 "fortran.y"
  2024. {
  2025.         do_assigned_GOTO(&(yypvt[-1]));
  2026.    } /*NOTREACHED*/ break;
  2027. case 222:
  2028. # line 1312 "fortran.y"
  2029. {
  2030.         do_assigned_GOTO(&(yypvt[-4]));
  2031.    } /*NOTREACHED*/ break;
  2032. case 223:
  2033. # line 1316 "fortran.y"
  2034. {
  2035.         do_assigned_GOTO(&(yypvt[-5]));
  2036.    } /*NOTREACHED*/ break;
  2037. case 231:
  2038. # line 1341 "fortran.y"
  2039. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  2040. case 232:
  2041. # line 1342 "fortran.y"
  2042. {
  2043.        if(is_true(ID_EXPR,yypvt[-1].subclass)){
  2044.     use_variable(&(yypvt[-1]));
  2045.        }
  2046.        complex_const_allowed = FALSE;
  2047.  
  2048.        initial_flag = TRUE; /* for is_keyword */
  2049.    } /*NOTREACHED*/ break;
  2050. case 234:
  2051. # line 1354 "fortran.y"
  2052. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  2053. case 235:
  2054. # line 1355 "fortran.y"
  2055. {
  2056.        if(is_true(ID_EXPR,yypvt[-1].subclass)){
  2057.     use_variable(&(yypvt[-1]));
  2058.        }
  2059.        complex_const_allowed = FALSE;
  2060.  
  2061.        initial_flag = TRUE;
  2062.    } /*NOTREACHED*/ break;
  2063. case 240:
  2064. # line 1385 "fortran.y"
  2065. {
  2066.         use_lvalue(&(yypvt[-3]));
  2067.         use_variable(&(yypvt[-3]));
  2068.    } /*NOTREACHED*/ break;
  2069. case 241:
  2070. # line 1390 "fortran.y"
  2071. {complex_const_allowed=TRUE;} /*NOTREACHED*/ break;
  2072. case 242:
  2073. # line 1391 "fortran.y"
  2074. {
  2075.        if(is_true(ID_EXPR,yypvt[-2].subclass)){
  2076.     use_variable(&(yypvt[-2]));
  2077.        }
  2078.        complex_const_allowed=FALSE;
  2079.        /* (N.B. nonportability flagged in do_handle) */
  2080.    } /*NOTREACHED*/ break;
  2081. case 243:
  2082. # line 1399 "fortran.y"
  2083. {complex_const_allowed=TRUE;} /*NOTREACHED*/ break;
  2084. case 244:
  2085. # line 1400 "fortran.y"
  2086. {
  2087.        if(is_true(ID_EXPR,yypvt[-2].subclass)){
  2088.     use_variable(&(yypvt[-2]));
  2089.        }
  2090.        complex_const_allowed=FALSE;
  2091. #ifdef ALLOW_DO_ENDO
  2092.        if(f77_standard)
  2093.     nonstandard(yypvt[-5].line_num,yypvt[-5].col_num);
  2094. #else
  2095.        syntax_error(yypvt[-5].line_num,yypvt[-5].col_num,
  2096.         "Nonstandard syntax");
  2097. #endif
  2098.    } /*NOTREACHED*/ break;
  2099. case 247:
  2100. # line 1418 "fortran.y"
  2101. {
  2102. #ifdef ALLOW_DO_ENDO
  2103.        if(f77_standard)
  2104.     nonstandard(yypvt[-0].line_num,yypvt[-0].col_num);
  2105. #else
  2106.        syntax_error(yypvt[-0].line_num,yypvt[-0].col_num,
  2107.         "Nonstandard syntax");
  2108. #endif
  2109.    } /*NOTREACHED*/ break;
  2110. case 250:
  2111. # line 1434 "fortran.y"
  2112. {
  2113. #ifdef ALLOW_DO_ENDO
  2114.        if(f77_standard)
  2115.     nonstandard(yypvt[-1].line_num,yypvt[-1].col_num);
  2116. #else
  2117.        syntax_error(yypvt[-1].line_num,yypvt[-1].col_num,
  2118.         "Nonstandard syntax");
  2119. #endif
  2120.    } /*NOTREACHED*/ break;
  2121. case 251:
  2122. # line 1444 "fortran.y"
  2123. {
  2124. #ifdef ALLOW_DO_ENDO
  2125.        if(f77_standard)
  2126.     nonstandard(yypvt[-1].line_num,yypvt[-1].col_num);
  2127. #else
  2128.        syntax_error(yypvt[-1].line_num,yypvt[-1].col_num,
  2129.         "Nonstandard syntax");
  2130. #endif
  2131.    } /*NOTREACHED*/ break;
  2132. case 257:
  2133. # line 1470 "fortran.y"
  2134. {
  2135.         use_variable(&(yypvt[-0]));
  2136.    } /*NOTREACHED*/ break;
  2137. case 259:
  2138. # line 1478 "fortran.y"
  2139. {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
  2140. case 261:
  2141. # line 1480 "fortran.y"
  2142. {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
  2143. case 263:
  2144. # line 1483 "fortran.y"
  2145. {control_item_count = 0;} /*NOTREACHED*/ break;
  2146. case 264:
  2147. # line 1485 "fortran.y"
  2148. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  2149. case 270:
  2150. # line 1498 "fortran.y"
  2151. {control_item_count = 0;} /*NOTREACHED*/ break;
  2152. case 271:
  2153. # line 1502 "fortran.y"
  2154. {
  2155.        if(f77_standard)
  2156.     nonstandard(yypvt[-2].line_num,yypvt[-2].col_num);
  2157.    } /*NOTREACHED*/ break;
  2158. case 272:
  2159. # line 1507 "fortran.y"
  2160. {
  2161.        if(f77_standard)
  2162.     nonstandard(yypvt[-4].line_num,yypvt[-4].col_num);
  2163.    } /*NOTREACHED*/ break;
  2164. case 274:
  2165. # line 1516 "fortran.y"
  2166. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  2167. case 275:
  2168. # line 1517 "fortran.y"
  2169. {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
  2170. case 277:
  2171. # line 1521 "fortran.y"
  2172. {
  2173.        if(f77_standard)
  2174.     nonstandard(yypvt[-2].line_num,yypvt[-2].col_num);
  2175.    } /*NOTREACHED*/ break;
  2176. case 278:
  2177. # line 1526 "fortran.y"
  2178. {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
  2179. case 279:
  2180. # line 1527 "fortran.y"
  2181. {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
  2182. case 280:
  2183. # line 1528 "fortran.y"
  2184. {
  2185.        if(f77_standard)
  2186.     nonstandard(yypvt[-6].line_num,yypvt[-6].col_num);
  2187.    } /*NOTREACHED*/ break;
  2188. case 281:
  2189. # line 1536 "fortran.y"
  2190. {
  2191.        ++control_item_count;
  2192.    } /*NOTREACHED*/ break;
  2193. case 282:
  2194. # line 1540 "fortran.y"
  2195. {
  2196.        ++control_item_count;
  2197.    } /*NOTREACHED*/ break;
  2198. case 283:
  2199. # line 1549 "fortran.y"
  2200. {
  2201.     /* This section awaits writing of code
  2202.      to handle i/o keywords.  For now, just
  2203.      assume unit_id is used, whatever it is. */
  2204. /**       if( $3.class != '*'
  2205. **          && is_true(ID_EXPR,$3.subclass)){
  2206. **    use_variable(&($3));
  2207. **       }
  2208. */
  2209.        use_io_keyword(&(yypvt[-2]),&(yypvt[-0]),curr_stmt_class);
  2210.    } /*NOTREACHED*/ break;
  2211. case 284:
  2212. # line 1561 "fortran.y"
  2213. {
  2214.        if( yypvt[-0].class != '*'
  2215.           && is_true(ID_EXPR,yypvt[-0].subclass)){
  2216.      /* WRITE(string,...) means store
  2217.         output in the string */
  2218.     if(curr_stmt_class == tok_WRITE
  2219.      && control_item_count == 0
  2220.      && datatype_of(yypvt[-0].class) == type_STRING)
  2221.         use_lvalue(&(yypvt[-0]));
  2222.  
  2223.     use_variable(&(yypvt[-0]));
  2224.        }
  2225.    } /*NOTREACHED*/ break;
  2226. case 287:
  2227. # line 1582 "fortran.y"
  2228. {
  2229.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2230.     if( curr_stmt_class == tok_READ ||
  2231.         curr_stmt_class == tok_ACCEPT )
  2232.         use_lvalue(&(yypvt[-0]));
  2233.     else
  2234.         use_variable(&(yypvt[-0]));
  2235.        }
  2236.    } /*NOTREACHED*/ break;
  2237. case 289:
  2238. # line 1596 "fortran.y"
  2239. {
  2240.         use_implied_do_index(&(yypvt[-3]));
  2241.    } /*NOTREACHED*/ break;
  2242. case 290:
  2243. # line 1602 "fortran.y"
  2244. {control_item_count = 0;} /*NOTREACHED*/ break;
  2245. case 292:
  2246. # line 1607 "fortran.y"
  2247. {control_item_count = 0;} /*NOTREACHED*/ break;
  2248. case 294:
  2249. # line 1612 "fortran.y"
  2250. {control_item_count = 0;} /*NOTREACHED*/ break;
  2251. case 298:
  2252. # line 1620 "fortran.y"
  2253. {control_item_count = 0;} /*NOTREACHED*/ break;
  2254. case 301:
  2255. # line 1627 "fortran.y"
  2256. {control_item_count = 0;} /*NOTREACHED*/ break;
  2257. case 304:
  2258. # line 1634 "fortran.y"
  2259. {control_item_count = 0;} /*NOTREACHED*/ break;
  2260. case 307:
  2261. # line 1648 "fortran.y"
  2262. {
  2263.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2264.      use_variable(&(yypvt[-0]));
  2265.        }
  2266.    } /*NOTREACHED*/ break;
  2267. case 309:
  2268. # line 1657 "fortran.y"
  2269. {inside_format=TRUE;} /*NOTREACHED*/ break;
  2270. case 310:
  2271. # line 1658 "fortran.y"
  2272. {
  2273.      inside_format=FALSE;
  2274.    } /*NOTREACHED*/ break;
  2275. case 325:
  2276. # line 1685 "fortran.y"
  2277. {
  2278.      if(f77_standard)
  2279.         nonstandard(yypvt[-0].line_num,yypvt[-0].col_num);
  2280.    } /*NOTREACHED*/ break;
  2281. case 329:
  2282. # line 1702 "fortran.y"
  2283. {
  2284.         call_subr(&(yypvt[-0]),(Token*)NULL);
  2285.         complex_const_allowed = FALSE;
  2286.    } /*NOTREACHED*/ break;
  2287. case 331:
  2288. # line 1708 "fortran.y"
  2289. {
  2290.         call_subr(&(yypvt[-2]),(Token*)NULL);
  2291.         complex_const_allowed = FALSE;
  2292.    } /*NOTREACHED*/ break;
  2293. case 333:
  2294. # line 1714 "fortran.y"
  2295. {
  2296.         call_subr(&(yypvt[-3]),&(yypvt[-1]));
  2297.         if(debug_parser)
  2298.     print_exprlist("call stmt",&(yypvt[-1]));
  2299.         complex_const_allowed = FALSE;
  2300.    } /*NOTREACHED*/ break;
  2301. case 335:
  2302. # line 1723 "fortran.y"
  2303. {
  2304.         complex_const_allowed = TRUE;
  2305.         yyval = yypvt[-0];
  2306.    } /*NOTREACHED*/ break;
  2307. case 336:
  2308. # line 1729 "fortran.y"
  2309. {
  2310.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2311.      use_actual_arg(&(yypvt[-0]));
  2312.      use_variable(&(yypvt[-0]));
  2313.        }
  2314.        yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
  2315.    } /*NOTREACHED*/ break;
  2316. case 337:
  2317. # line 1737 "fortran.y"
  2318. {
  2319.        yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
  2320.    } /*NOTREACHED*/ break;
  2321. case 338:
  2322. # line 1741 "fortran.y"
  2323. {
  2324.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2325.      use_actual_arg(&(yypvt[-0]));
  2326.      use_variable(&(yypvt[-0]));
  2327.        }
  2328.        yyval.next_token = append_token(yypvt[-2].next_token,&(yypvt[-0]));
  2329.    } /*NOTREACHED*/ break;
  2330. case 339:
  2331. # line 1749 "fortran.y"
  2332. {
  2333.        yyval.next_token = append_token(yypvt[-3].next_token,&(yypvt[-0]));
  2334.    } /*NOTREACHED*/ break;
  2335. case 340:
  2336. # line 1756 "fortran.y"
  2337. {
  2338.         do_RETURN(current_module_hash,&(yypvt[-1]));
  2339.    } /*NOTREACHED*/ break;
  2340. case 341:
  2341. # line 1760 "fortran.y"
  2342. {
  2343.         do_RETURN(current_module_hash,&(yypvt[-2]));
  2344.    } /*NOTREACHED*/ break;
  2345. case 342:
  2346. # line 1771 "fortran.y"
  2347. {
  2348.        if( ! is_true(CONST_EXPR,yypvt[-0].subclass) ) {
  2349.     syntax_error(
  2350.        yypvt[-0].line_num,yypvt[-0].col_num,
  2351.        "constant expression expected");
  2352.        }
  2353.        else if( ! is_const_type(yypvt[-0].class) ){
  2354.     syntax_error(
  2355.      yypvt[-0].line_num,yypvt[-0].col_num,
  2356.    "arithmetic, char, or logical expression expected");
  2357.        }
  2358.    } /*NOTREACHED*/ break;
  2359. case 343:
  2360. # line 1787 "fortran.y"
  2361. {
  2362.        if(debug_parser) {
  2363.     fprintf(list_fd,
  2364.      "\nexpr: class=0x%x subclass=0x%x",
  2365.      yypvt[-0].class,
  2366.      yypvt[-0].subclass);
  2367.        }
  2368.    } /*NOTREACHED*/ break;
  2369. case 345:
  2370. # line 1800 "fortran.y"
  2371. {
  2372.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2373.       ,&(yyval));
  2374.    } /*NOTREACHED*/ break;
  2375. case 346:
  2376. # line 1805 "fortran.y"
  2377. {
  2378.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2379.       ,&(yyval));
  2380.    } /*NOTREACHED*/ break;
  2381. case 348:
  2382. # line 1814 "fortran.y"
  2383. {
  2384.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2385.       ,&(yyval));
  2386.    } /*NOTREACHED*/ break;
  2387. case 350:
  2388. # line 1823 "fortran.y"
  2389. {
  2390.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2391.       ,&(yyval));
  2392.    } /*NOTREACHED*/ break;
  2393. case 352:
  2394. # line 1832 "fortran.y"
  2395. {
  2396.        unexpr_type(&(yypvt[-1]),&(yypvt[-0]),&(yyval));
  2397.    } /*NOTREACHED*/ break;
  2398. case 354:
  2399. # line 1840 "fortran.y"
  2400. {
  2401.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2402.       ,&(yyval));
  2403.    } /*NOTREACHED*/ break;
  2404. case 356:
  2405. # line 1850 "fortran.y"
  2406. {
  2407.        unexpr_type(&(yypvt[-1]),&(yypvt[-0]),&(yyval));
  2408.    } /*NOTREACHED*/ break;
  2409. case 357:
  2410. # line 1854 "fortran.y"
  2411. {
  2412.        unexpr_type(&(yypvt[-1]),&(yypvt[-0]),&(yyval));
  2413.    } /*NOTREACHED*/ break;
  2414. case 358:
  2415. # line 1858 "fortran.y"
  2416. {
  2417.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2418.       ,&(yyval));
  2419.    } /*NOTREACHED*/ break;
  2420. case 359:
  2421. # line 1863 "fortran.y"
  2422. {
  2423.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2424.       ,&(yyval));
  2425.    } /*NOTREACHED*/ break;
  2426. case 361:
  2427. # line 1872 "fortran.y"
  2428. {
  2429.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2430.       ,&(yyval));
  2431.        if(div_check &&
  2432.           !is_true(CONST_EXPR,yypvt[-0].subclass)){
  2433.     warning(yypvt[-1].line_num,yypvt[-1].col_num,
  2434.      "Possible division by zero");
  2435.        }
  2436.    } /*NOTREACHED*/ break;
  2437. case 362:
  2438. # line 1882 "fortran.y"
  2439. {
  2440.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2441.       ,&(yyval));
  2442.    } /*NOTREACHED*/ break;
  2443. case 364:
  2444. # line 1891 "fortran.y"
  2445. {
  2446.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2447.       ,&(yyval));
  2448.    } /*NOTREACHED*/ break;
  2449. case 366:
  2450. # line 1900 "fortran.y"
  2451. {
  2452.        binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
  2453.       ,&(yyval));
  2454.    } /*NOTREACHED*/ break;
  2455. case 367:
  2456. # line 1907 "fortran.y"
  2457. {
  2458.        DBGstr(primary<--id=,token_name(yypvt[-0]));
  2459.    } /*NOTREACHED*/ break;
  2460. case 370:
  2461. # line 1915 "fortran.y"
  2462. {
  2463.        make_true(CONST_EXPR,yyval.subclass);
  2464.        make_true(NUM_CONST,yyval.subclass);
  2465.    } /*NOTREACHED*/ break;
  2466. case 371:
  2467. # line 1920 "fortran.y"
  2468. {
  2469.        DBGstr(primary<--str=,yypvt[-0].value.string)
  2470.        yyval.class = type_byte(class_VAR,type_STRING);
  2471.        yyval.subclass = 0;
  2472.        make_true(CONST_EXPR,yyval.subclass);
  2473.    } /*NOTREACHED*/ break;
  2474. case 372:
  2475. # line 1927 "fortran.y"
  2476. {
  2477.        DBGstr(primary<--h=,yypvt[-0].value.string)
  2478.        yyval.class = type_byte(class_VAR,type_HOLLERITH);
  2479.        yyval.subclass = 0;
  2480.        make_true(CONST_EXPR,yyval.subclass);
  2481.        if(port_check) {
  2482.     warning(yypvt[-0].line_num,yypvt[-0].col_num,
  2483.     "hollerith constant may not be portable");
  2484.        }
  2485.    } /*NOTREACHED*/ break;
  2486. case 373:
  2487. # line 1938 "fortran.y"
  2488. {
  2489.        DBGstr(primary<--log=,yypvt[-0].value.string)
  2490.        yyval.class = type_byte(class_VAR,type_LOGICAL);
  2491.        yyval.subclass = 0;
  2492.        make_true(CONST_EXPR,yyval.subclass);
  2493.    } /*NOTREACHED*/ break;
  2494. case 374:
  2495. # line 1945 "fortran.y"
  2496. {
  2497.        yyval = yypvt[-1];
  2498.    } /*NOTREACHED*/ break;
  2499. case 375:
  2500. # line 1951 "fortran.y"
  2501. {
  2502.        yyval.class = type_byte(class_VAR,type_INTEGER);
  2503.        yyval.subclass = 0;
  2504.    } /*NOTREACHED*/ break;
  2505. case 376:
  2506. # line 1956 "fortran.y"
  2507. {
  2508.        yyval.class = type_byte(class_VAR,type_REAL);
  2509.        yyval.subclass = 0;
  2510.    } /*NOTREACHED*/ break;
  2511. case 377:
  2512. # line 1961 "fortran.y"
  2513. {
  2514.        yyval.class = type_byte(class_VAR,type_DP);
  2515.        yyval.subclass = 0;
  2516.    } /*NOTREACHED*/ break;
  2517. case 378:
  2518. # line 1966 "fortran.y"
  2519. {
  2520.        yyval.class = type_byte(class_VAR,type_COMPLEX);
  2521.        yyval.subclass = 0;
  2522.    } /*NOTREACHED*/ break;
  2523. case 379:
  2524. # line 1974 "fortran.y"
  2525. {
  2526.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2527.     use_variable(&(yypvt[-0]));
  2528.        }
  2529.        if(datatype_of(yypvt[-0].class) != type_INTEGER) {
  2530.     syntax_error(
  2531.      yypvt[-0].line_num,yypvt[-0].col_num,
  2532.      "expression must be integer type");
  2533.        }
  2534.    } /*NOTREACHED*/ break;
  2535. case 380:
  2536. # line 1988 "fortran.y"
  2537. {
  2538.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2539.     use_variable(&(yypvt[-0]));
  2540.        }
  2541.        {
  2542.     int t=datatype_of(yypvt[-0].class);
  2543.         if(t != type_INTEGER && t != type_REAL
  2544.      && t != type_DP ) {
  2545.      syntax_error(
  2546.        yypvt[-0].line_num,yypvt[-0].col_num,
  2547.   "expression must be integer, real, or double precision type");
  2548.             }
  2549.        }
  2550.    } /*NOTREACHED*/ break;
  2551. case 381:
  2552. # line 2008 "fortran.y"
  2553. {
  2554.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2555.     use_variable(&(yypvt[-0]));
  2556.        }
  2557.        if( ! is_true(CONST_EXPR,yypvt[-0].subclass) ) {
  2558.     syntax_error(
  2559.      yypvt[-0].line_num,yypvt[-0].col_num,
  2560.      "constant expression expected");
  2561.        }
  2562.        else
  2563.          if(datatype_of(yypvt[-0].class) != type_INTEGER){
  2564.     syntax_error(
  2565.      yypvt[-0].line_num,yypvt[-0].col_num,
  2566.      "integer expression expected");
  2567.        }
  2568.  
  2569.    } /*NOTREACHED*/ break;
  2570. case 382:
  2571. # line 2029 "fortran.y"
  2572. {
  2573.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2574.     use_variable(&(yypvt[-0]));
  2575.        }
  2576.  
  2577.        if( datatype_of(yypvt[-0].class) != type_INTEGER ){
  2578.     syntax_error(
  2579.      yypvt[-0].line_num,yypvt[-0].col_num,
  2580.      "integer dimension expected");
  2581.     yyval.value.integer = 0;
  2582.        }
  2583.        else {
  2584.          if( is_true(CONST_EXPR,yypvt[-0].subclass) )
  2585.     yyval.value.integer =
  2586.       int_expr_value(&(yypvt[-0]));
  2587.          else  /* must be dummy */
  2588.     yyval.value.integer = 0;
  2589.        }
  2590.    } /*NOTREACHED*/ break;
  2591. case 383:
  2592. # line 2055 "fortran.y"
  2593. {
  2594.        if( is_true (ARRAY_ID_EXPR, yypvt[-3].subclass)){
  2595.     ref_array(&(yypvt[-3]),&(yypvt[-1]));
  2596.     if(debug_parser)
  2597.         print_exprlist("array lvalue",&(yypvt[-1]));
  2598.      /* array now becomes scalar */
  2599.     make_false(ARRAY_ID_EXPR,yyval.subclass);
  2600.        }
  2601.        else {          /* statement-function */
  2602.     if(stmt_sequence_no > seq_stmt_fun) {
  2603.         syntax_error(
  2604.      yypvt[-3].line_num, NO_COL_NUM,
  2605.          "statement out of order");
  2606.      }
  2607.     def_stmt_function(&(yypvt[-3]),&(yypvt[-1]));
  2608.      /* remake token info */
  2609.     primary_id_expr(&(yypvt[-3]),&(yyval));
  2610.     if(debug_parser)
  2611.       print_exprlist("stmt function",&(yypvt[-1]));
  2612.        }
  2613.    } /*NOTREACHED*/ break;
  2614. case 384:
  2615. # line 2078 "fortran.y"
  2616. {
  2617.  
  2618.        if( is_true(ARRAY_ID_EXPR,yypvt[-3].subclass) ) {
  2619.     ref_array(&(yypvt[-3]),&(yypvt[-1]));
  2620.     if(debug_parser)
  2621.         print_exprlist("array",&(yypvt[-1]));
  2622.      /* array now becomes scalar */
  2623.     make_false(ARRAY_ID_EXPR,yyval.subclass);
  2624.        }
  2625.        else {
  2626.     call_func(&(yypvt[-3]),&(yypvt[-1]));
  2627.        /* remake token info */
  2628.     func_ref_expr(&(yypvt[-3]),&(yypvt[-1])
  2629.            ,&(yyval));
  2630.     if(debug_parser)
  2631.         print_exprlist("function",&(yypvt[-1]));
  2632.        }
  2633.    } /*NOTREACHED*/ break;
  2634. case 385:
  2635. # line 2099 "fortran.y"
  2636. {
  2637.        yyval.class = 0;
  2638.        yyval.next_token = NULL;
  2639.    } /*NOTREACHED*/ break;
  2640. case 387:
  2641. # line 2107 "fortran.y"
  2642. {
  2643.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2644.      use_var_as_subscr(&(yypvt[-0]));
  2645.        }
  2646.        yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
  2647.    } /*NOTREACHED*/ break;
  2648. case 388:
  2649. # line 2114 "fortran.y"
  2650. {
  2651.        if(is_true(ID_EXPR,yypvt[-0].subclass)){
  2652.           use_var_as_subscr(&(yypvt[-0]));
  2653.        }
  2654.        yyval.next_token = append_token(yypvt[-2].next_token,&(yypvt[-0]));
  2655.    } /*NOTREACHED*/ break;
  2656. case 394:
  2657. # line 2133 "fortran.y"
  2658. {
  2659.        if(is_true(ID_EXPR,yypvt[-2].subclass)){
  2660.     use_variable(&(yypvt[-2]));
  2661.        }
  2662.    } /*NOTREACHED*/ break;
  2663. case 395:
  2664. # line 2139 "fortran.y"
  2665. {
  2666.        if(is_true(ID_EXPR,yypvt[-1].subclass)){
  2667.     use_variable(&(yypvt[-1]));
  2668.        }
  2669.    } /*NOTREACHED*/ break;
  2670. case 396:
  2671. # line 2145 "fortran.y"
  2672. {
  2673.        if(is_true(ID_EXPR,yypvt[-3].subclass)){
  2674.     use_variable(&(yypvt[-3]));
  2675.        }
  2676.        if(is_true(ID_EXPR,yypvt[-1].subclass)){
  2677.     use_variable(&(yypvt[-1]));
  2678.        }
  2679.  
  2680.    } /*NOTREACHED*/ break;
  2681. case 397:
  2682. # line 2160 "fortran.y"
  2683. {
  2684.        ref_variable(&(yypvt[-0]));
  2685.        primary_id_expr(&(yypvt[-0]),&(yyval));
  2686.    } /*NOTREACHED*/ break;
  2687. case 406:
  2688. # line 2189 "fortran.y"
  2689. {
  2690.     yyval.class = type_byte(class_LABEL,type_LABEL);
  2691.     yyval.subclass = 0;
  2692.    } /*NOTREACHED*/ break;
  2693. }
  2694.  
  2695.  
  2696.  goto yystack;  /* reset registers in driver code */
  2697. }
  2698.